using System;
using System.Collections.Generic;
using SiaSun.LMS.Model;
using System.Text;
using System.ServiceModel;
using System.Data;

namespace SiaSun.LMS.Interface
{
    [ServiceContract()]

    [ServiceKnownType(typeof(Object))]
    [ServiceKnownType(typeof(SiaSun.LMS.Model.GOODS_TEMPLATE))]
    [ServiceKnownType(typeof(DataTable))]
    [ServiceKnownType(typeof(SiaSun.LMS.Model.PLAN_MAIN))]
    [ServiceKnownType(typeof(DataTable))]
    [ServiceKnownType(typeof(List<object>))]

    [ServiceKnownType(typeof(GOODS_MAIN))]
    [ServiceKnownType(typeof(SiaSun.LMS.Model.SYS_USER))]
    [ServiceKnownType(typeof(SiaSun.LMS.Model.MANAGE_LIST))]
    [ServiceKnownType(typeof(SiaSun.LMS.Model.MANAGE_MAIN))]
    [ServiceKnownType(typeof(List<MANAGE_LIST>))]
    [ServiceKnownType(typeof(List<PLAN_LIST>))]


    public partial interface I_BaseService
    {
        [OperationContract]
        bool Invoke(string sPlanType, string sMethod, object[] inParams, out string sResult);
        [OperationContract(Name = "Invoke1")]
        bool Invoke(string sPlanType, string sMethod, object[] inParams, out object[] outParams);

        [OperationContract]
        void ExecuteNonQuery_ReturnVoid(string strSQL, string DataAccess = "HouseMap");

        [OperationContract]
        int ExecuteNonQuery_ReturnInt(string strSQL, string DataAccess = "HouseMap");

        [OperationContract]
        DataTable GetList(string strSQL, string DataAccess = "HouseMap");

        [OperationContract]
        DataTable GetTableXmlSql(string statementsql, object paramObject,string DataAccess = "HouseMap");

        [OperationContract]
        int Save(DataTable dt, string tablename, string DataAccess = "HouseMap");

        [OperationContract]
        ObjectT GetModel(string statementName, object parameterObject,string DataAccess = "HouseMap");

        [OperationContract]
        ObjectList GetListObject(string statementName, object parameterObject, string DataAccess = "HouseMap");

        [OperationContract]
        string MessageConverter_GetKeyValue(string Key, params object[] Param);

        #region     ------Log日志

        /// <summary>
        /// 添加日志记录
        /// </summary>
        [OperationContract]
        void AddLog(string Message);

        /// <summary>
        /// 获得日志文件列表
        /// </summary>
        [OperationContract]
        IList<string> ReadLogFileList();

        /// <summary>
        /// 读取日志文件并返回日志信息
        /// </summary>
        [OperationContract]
        IList<Model.Log> GetLogFromFile(string FileName);

        /// <summary>
        /// 根据文档内容返回日志信息
        /// </summary>
        [OperationContract]
        IList<Model.Log> GetLogFromContent(string XmlContent);

        /// <summary>
        /// 删除日志文件
        /// </summary>
        [OperationContract]
        void DeleteLogFile(string[] FileList);

        /// <summary>
        /// 清除指定日期以前的日志
        /// </summary>
        [OperationContract]
        void ClearLogFile(DateTime date);

        #endregion

        /// <summary>系统初始化
        /// 系统初始化
        /// </summary>
        [OperationContract]
        void InitSystem();
    }
}