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

using System.Data;
using System.ServiceModel;

namespace SiaSun.LMS.Interface
{
    [ServiceContract()]
    public partial interface I_SystemService
    {
        #region     ------FIELD_DESCRIPTION
        /// <summary>
        /// Get Model
        /// </summary>
        /// <param name="Column">列名</param>
        /// <param name="DbType">数据类型</param>
        /// <param name="Header">标题</param>
        /// <param name="FieldType">控件类型,combox,text,bool,elementcombox</param>
        /// <param name="DefaultValue">默认值</param>
        /// <param name="Editable">是否只读,true:只读,false:可写</param>
        /// <param name="Valid">数据验证:验证验证控件空时的提示消息</param>
        /// <param name="Key">combobox控件对应的数据源</param>
        /// <param name="Remark">备注</param>
        /// <param name="Index">排序</param>
        /// <returns></returns>
        [OperationContract]
        SiaSun.LMS.Model.FIELD_DESCRIPTION FIELD_DESCRIPTION_GetModel(string Column, string DbType, string Header, string FieldType, string DefaultValue, bool Editable, string Valid, string Key, string Remark, int Index);

        #endregion


        /// <summary>
        /// 系统初始化
        /// </summary>
        [OperationContract]
        void SYS_Initialize(string[] Table_List,bool AllowInitCell);

        #region     ------USER
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="USER_CODE">用户编码</param>
        /// <param name="USER_PASSWORD">用户密码</param>
        /// <param name="USER">用户实体</param>
        /// <returns>是否成功</returns>
        /// 
        [OperationContract]
        bool USER_LOGIN(string USER_CODE, string USER_PASSWORD, out SiaSun.LMS.Model.SYS_USER USER);

        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="USER_CODE"></param>
        /// <param name="USER_PASSWORD_OLD"></param>
        /// <param name="USER_PASSWORD_NEW"></param>
        /// <param name="sResult"></param>
        /// <returns></returns>
        [OperationContract]
        bool USER_PASSWORD(string USER_CODE, string USER_PASSWORD_OLD, string USER_PASSWORD_NEW, out string sResult);

        [OperationContract]
        IList<SiaSun.LMS.Model.SYS_USER> USER_GetList(int ROLE_ID, bool bSelect);

        [OperationContract]
        bool USER_ADD(SiaSun.LMS.Model.SYS_USER USER, string CONFIRM_PWD, out string sResult);

        [OperationContract]
        bool USER_UPDATE(SiaSun.LMS.Model.SYS_USER USER, string CONFIRM_PWD, out string sResult);

        #endregion

        #region     ------ROLE

        [OperationContract]
        bool ROLE_ADD(SiaSun.LMS.Model.SYS_ROLE ROLE, out string sResult);

        [OperationContract]
        bool ROLE_UPDATE(SiaSun.LMS.Model.SYS_ROLE ROLE, out string sResult);

        [OperationContract]
        IList<SiaSun.LMS.Model.SYS_ROLE> ROLE_GetList(int USER_ID);

        [OperationContract]
        SiaSun.LMS.Model.SYS_ROLE ROLE_GetModel(int ROLE_ID);

        #endregion

        #region         ------ROLE_WINDOW

        /// <summary>
        /// 获得角色的窗体控件设置列表
        /// </summary>
        [OperationContract]
        IList<Model.SYS_ROLE_WINDOW> ROLE_WINDOW_GetList_ROLE_MENU(int ROLE_ID, int MENU_ID);

        /// <summary>
        /// 根据菜单ID和控件名称获得角色窗体实例
        /// </summary>
        [OperationContract]
        Model.SYS_ROLE_WINDOW ROLE_WINDOW_GetModel_MENU_CONTROL(int ROLE_ID, int MENU_ID, string CONTROL_NAME);

        /// <summary>
        /// 保存ROLE_WINDOW更改
        /// </summary>
        [OperationContract]
        bool ROLE_WINDOW_Save(int ROLE_ID, int MENU_ID, IList<Model.SYS_ROLE_WINDOW> listROLE_WINDOW, out string strResult);

        #endregion

        #region     ------ITEM

        /// <summary>
        /// 根据编码获得值对集合
        /// </summary>
        [OperationContract]
        DataTable ITEM_LIST_GetDictionary(string ITEM_CODE);

        /// <summary>
        /// 根据编码获得列表
        /// </summary>
        [OperationContract]
        IList<SiaSun.LMS.Model.SYS_ITEM_LIST> ITEM_LIST_GetList_ITEM_CODE(string ITEM_CODE);
        
        #endregion

        #region     ------MENU

        /// <summary>
        /// 菜单-获取列表
        /// </summary>
        [OperationContract()]
        IList<SiaSun.LMS.Model.SYS_MENU> MENU_GetList();

         /// <summary>
        /// 菜单-获取列表
        /// </summary>
        /// <param name="ROLE_ID">角色编号</param>
        [OperationContract()]
        IList<SiaSun.LMS.Model.SYS_MENU> MENU_GetList_ROLE_Select(int ROLE_ID, bool bSelect);

        [OperationContract]
        SiaSun.LMS.Model.SYS_MENU MENU_GetModel(int MENU_ID);

        #endregion

        #region     ------RELATION

        /// <summary>
        /// 获得关系实例
        /// </summary>
        [OperationContract]
        Model.SYS_RELATION RELATION_GetModel(string RELATION_CODE);

        /// <summary>
        /// 获得关系列表
        /// </summary>
        [OperationContract]
        IList<Model.SYS_RELATION_LIST> RELATION_LIST_GetList(int RELATION_ID);

        /// <summary>
        /// 获得关系列表
        /// </summary>
        [OperationContract]
        IList<Model.SYS_RELATION_LIST> RELATION_LIST_GetList_ID1(int RELATION_ID, int RELATION_ID1);

        /// <summary>
        /// 添加关系明细
        /// </summary>
        /// <returns></returns>
        [OperationContract]
        bool RELATION_LIST_Add(string RELATION_CODE, int RELATION_ID1, int[] List_RELATION_ID2, out string Result);

        #endregion

        //#region     ------SYS_TABLE

        ///// <summary>
        ///// 获得所有列表
        ///// </summary>
        ///// <returns></returns>
        //[OperationContract]
        //IList<Model.SYS_TABLE> SYS_TABLE_GetList();

        ///// <summary>
        ///// 获得主键字段名
        ///// </summary>
        //[OperationContract]
        //string SYS_TABLE_GetPrimaryKey(string TableName);

        //#endregion        

        //#region     ------SYS_TABLE_CONVERTER_LIST

        ///// <summary>
        ///// 获得所有映射列表
        ///// </summary>
        //[OperationContract]
        //IList<Model.SYS_TABLE_CONVERTER> TABLE_CONVERTER_GetList();

        ///// <summary>
        ///// 根据转换编码获得所有转换器信息
        ///// </summary>
        //[OperationContract]
        //IList<Model.SYS_TABLE_CONVERTER> TABLE_CONVERTER_GetList_ConverterCode(string TABLE_CONVERTER_CODE);

        ///// <summary>
        ///// 根据转换编号获得所有转换映射列表
        ///// </summary>
        //[OperationContract]
        //IList<Model.SYS_TABLE_CONVERTER_LIST> TABLE_CONVERTER_LIST_GetList_ConverterID(int TABLE_CONVERTER_ID);

        ///// <summary>
        ///// 根据数据导入模板导入数据
        ///// </summary>
        //[OperationContract]
        //DataSet SYS_TABLE_CONVERTER_Import(string TABLE_CONVERTER_CODE, DataTable tableImport, out string strResult);

        ///// <summary>
        ///// 提交保存导入数据
        ///// </summary>
        //[OperationContract]
        //int TABLE_CONVERTER_Save(Model.SYS_TABLE_CONVERTER mTABLE_CONVERTER, DataSet dsImport, out string strResult);

        //#endregion

    }
}