using System;
using System.Collections.Generic;
using System.Linq;
using MySystem.MainModels;
using Library;
using LitJson;
using System.Data;

namespace MySystem
{
    public class ConsumerProfitService
    {
        string _conn = "";
        public ConsumerProfitService()
        {
            _conn = ConfigurationManager.AppSettings["SqlConnStr"].ToString();
        }

        /// <summary>
        /// 查询列表
        /// </summary>
        /// <param name="fields">查询条件(单个字段)</param>
        /// <param name="condition">查询条件(sql语句)</param>
        /// <param name="page">页码</param>
        /// <param name="limit">每页条数</param>
        /// <returns></returns>
        public List<Dictionary<string, object>> List(List<FieldItem> fields, string condition, int page = 1, int limit = 30, string orderby = "Id desc")
        {
            Dictionary<string, object> obj = new DbService(AppConfig.Base.mainTables, _conn).IndexData("ConsumerProfit", fields, orderby, "0", page, limit, condition);
            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
            return diclist;
        }

        /// <summary>
        /// 查询一条记录
        /// </summary>
        /// <param name="Id">主键Id</param>
        /// <returns></returns>
        public ConsumerProfit Query(int Id)
        {
            WebCMSEntities db = new WebCMSEntities();
            ConsumerProfit editData = db.ConsumerProfit.FirstOrDefault(m => m.Id == Id) ?? new ConsumerProfit();
            db.Dispose();
            return editData;
        }
        public Dictionary<string, string> Sum(string field, string condition)
        {
            Dictionary<string, string> result = new Dictionary<string, string>();
            string sumString = "";
            string[] fieldlist = field.Split(',');
            foreach(string f in fieldlist)
            {
                sumString += "sum(" + f + ") " + f + ",";
            }
            sumString = sumString.TrimEnd(',');
            DataTable dt = CustomerSqlConn.dtable("select " + sumString + " from ConsumerProfit where 1=1" + condition, _conn);
            if(dt.Rows.Count > 0)
            {
                foreach(string f in fieldlist)
                {
                    result.Add(f, function.CheckNum(dt.Rows[0][f].ToString()));
                }
            }
            return result;
        }

        /// <summary>
        /// 添加数据
        /// </summary>
        /// <param name="Fields">要设置的字段</param>
        /// <returns></returns>
        public int Add(Dictionary<string, object> Fields)
        {
            return new DbService(AppConfig.Base.mainTables, _conn).Add("ConsumerProfit", Fields, 0);
        }

        /// <summary>
        /// 修改数据
        /// </summary>
        /// <param name="Fields">要设置的字段</param>
        /// <param name="Id">主键Id</param>
        public void Edit(Dictionary<string, object> Fields, int Id)
        {
            new DbService(AppConfig.Base.mainTables, _conn).Edit("ConsumerProfit", Fields, Id);
        }

        /// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="Id">主键Id</param>
        public void Delete(int Id)
        {
            new DbService(AppConfig.Base.mainTables, _conn).Delete("ConsumerProfit", Id);
        }

        /// <summary>
        /// 排序
        /// </summary>
        /// <param name="Id">主键Id</param>
        /// <param name="Sort">排序序号</param>
        public void Sort(int Id, int Sort)
        {
            new DbService(AppConfig.Base.mainTables, _conn).Sort("ConsumerProfit", Sort, Id);
        }

        /// <summary>
        /// 导入数据
        /// </summary>
        /// <param name="ExcelData">json数据</param>
        public void Import(string ExcelData)
        {
            WebCMSEntities db = new WebCMSEntities();
            JsonData list = JsonMapper.ToObject(ExcelData);
            for (int i = 1; i < list.Count;i++ )
            {
                JsonData dr = list[i];
                
                db.ConsumerProfit.Add(new ConsumerProfit()
                {
                    CreateDate = DateTime.Now,
                    UpdateDate = DateTime.Now,
                    
                });
                db.SaveChanges();
            }
            db.Dispose();
        }

        /// <summary>
        /// 导出excel表格
        /// </summary>
        /// <param name="fields">查询条件(单个字段)</param>
        /// <param name="condition">查询条件(sql语句)</param>
        /// <returns></returns>
        public Dictionary<string, object> ExportExcel(List<FieldItem> fields, string condition, string orderby = "Id desc")
        {
            Dictionary<string, object> obj = new DbService(AppConfig.Base.mainTables, _conn).IndexData("ConsumerProfit", fields, orderby, "0", 1, 20000, condition, "Id", false);
            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
            foreach (Dictionary<string, object> dic in diclist)
            {
            }

            Dictionary<string, object> result = new Dictionary<string, object>();
            result.Add("Status", "1");
            result.Add("Info", "Excel报表-" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss") + ".xlsx");
            result.Add("Obj", diclist);
            Dictionary<string, object> ReturnFields = new Dictionary<string, object>();

            result.Add("Fields", ReturnFields);
            return result;
        }
    }
}