using System;
using System.Collections.Generic;
using System.Text;

/***************菜单基本信息数据库访问层*****************
 * 这个类关联的数据库中的表是Menu的父表,这张表主要记录了
 * 这笔菜单的一些基本情况,比如菜单名,桌数,创建者,创建时间
 * 这个类提供这些属性的基本操作
 * 设计者:王枢昊
 * 设计时间:2008年5月25日
 * 修订者:王枢昊
 * 修订时间:
 ********************************************************/ 
namespace IDDal
{
    /// <summary>
    /// 菜单基本信息的操作类
    /// </summary>
    /// <typeparam name="T">菜单基本信息对象</typeparam>
    public interface MenuTypeDal<T>
    {
        /// <summary>
        /// 增加一条菜单基本信息的方法
        /// </summary>
        /// <param name="menutype">菜单基本信息的对象</param>
        /// <returns>该条菜单的菜单号</returns>
        string AddMenuType(T menutype);

        /// <summary>
        /// 删除一条菜单基本信息的方法
        /// </summary>
        /// <param name="menutype">菜单基本信息的对象</param>
        /// <returns>影响数据库记录行</returns>
        int DeleteMenuType(T menutype);

        /// <summary>
        /// 修改一条菜单基本信息的方法
        /// </summary>
        /// <param name="menutype">菜单基本信息的对象</param>
        /// <returns>影响数据库记录行</returns>
        int EditMenuType(T menutype);

        /// <summary>
        /// 获取全部的菜单列表
        /// </summary>
        /// <returns>集合对象</returns>
        IList<T> MenuTypes();

        /// <summary>
        /// 根据类型获取菜单列表
        /// </summary>
        /// <param name="type">菜单类型[0是客户菜单,1是管理员菜单]</param>
        /// <returns>集合对象</returns>
        IList<T> MenuTypes(string type);

        /// <summary>
        /// 根据类型和创建者的ID获取菜单列表
        /// </summary>
        /// <param name="type">菜单类型[0是客户菜单,1是管理员菜单]</param>
        /// <param name="createrid">创建者</param>
        /// <returns>集合对象</returns>
        IList<T> MenuTypes(string type,string createrid);

        /// <summary>
        /// 根据类型,创建者的ID和创建时间获取菜单列表
        /// </summary>
        /// <param name="type">菜单类型[0是客户菜单,1是管理员菜单]</param>
        /// <param name="createrid">创建者</param>
        /// <param name="time">创建时间</param>
        /// <returns>集合对象</returns>
        IList<T> MenuTypes(string type, string createrid,DateTime time);

        /// <summary>
        /// 根据类型,创建者的ID和菜单名称获取菜单列表
        /// </summary>
        /// <param name="type">菜单类型[0是客户菜单,1是管理员菜单]</param>
        /// <param name="createrid">创建者</param>
        /// <param name="menuname">菜单名称</param>
        /// <returns>集合对象</returns>
        IList<T> MenuTypes(string type, string createrid, string menuname);

        /// <summary>
        /// 根据类型,创建者的ID,创建时间和菜单名称获取菜单列表
        /// </summary>
        /// <param name="type">菜单类型[0是客户菜单,1是管理员菜单]</param>
        /// <param name="createrid">创建者</param>
        /// <param name="menuname">菜单名称</param>
        /// <param name="time">创建时间</param>
        /// <returns>集合对象</returns>
        IList<T> MenuTypes(string type, string createrid, string menuname, DateTime time);

        /// <summary>
        /// 根据菜单的ID获得一个菜单信息
        /// </summary>
        /// <param name="menuId">菜单ID</param>
        /// <returns>菜单对象</returns>
        T GetOneMenu(string menuId);

        /// <summary>
        /// 选择热门的菜单
        /// </summary>
        /// <returns>菜单对象集合</returns>
        IList<T> SelectHotMenu();
    }
}
