using System;
using System.Collections.Generic;
using System.Text;
//该源码首发自www.51aspx.com(５１ａｓｐｘ．ｃｏｍ)

/***************************用户定餐的数据库操作**********************************
 * 这部分操作主要是添加一笔新订单,查询现有订单(几种重载模式)
 * 添加一笔新订单的返回值是数据库影响的记录行,查询订单的返回值都是集合IList类型
 * T范形这里是对应Model.Order对象,一笔订单的对象
 * 设计者:魏莹
 * 设计时间:2008年5月20日
 * 修订者:王枢昊
 * 修定时间:
 ***********************************************************************************/
namespace IDDal
{
    /// <summary>
    /// 用户定餐订单的数据库操作
    /// </summary>
    /// <typeparam name="T">T是一笔订单对象</typeparam>
    public interface IOrder<T>
    {
        /// <summary>
        /// 增加一笔新订单的方法,订单的单位是以一个菜单为单位
        /// </summary>
        /// <param name="order">订单对象</param>
        /// <param name="guid">传出的订单号</param>
        /// <returns>影响数据库记录条数</returns>
        int NewOrder(T order,out string guid);

        /// <summary>
        /// 列出全部的订单列表方法
        /// </summary>
        /// <returns>返回集合类型[内部类型为Order]</returns>
        IList<T> OrderList();

        /// <summary>
        /// 列出符合查询条件的订单列表方法
        /// </summary>
        /// <param name="startTime">设定开始时间</param>
        /// <param name="endTime">设定结束时间</param>
        /// <returns>返回集合类型</returns>
        IList<T> OrderList(DateTime startTime,DateTime endTime);

        /// <summary>
        /// 列出指定用户ID的订单列表方法
        /// </summary>
        /// <param name="createId">用户ID</param>
        /// <returns>返回集合类型</returns>
        IList<T> OrderList(string createId);

        /// <summary>
        /// 列出符合查询条件的订单列表方法
        /// </summary>
        /// <param name="createId">用户ID</param>
        /// <param name="startTime">设定开始时间</param>
        /// <param name="endTime">设定结束时间</param>
        /// <returns>返回集合类型</returns>
        IList<T> OrderList(string createId, DateTime startTime, DateTime endTime);
    }
}
