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

namespace MySystem
{
    public class IndexIconListService
    {
        string _conn = "";
        public IndexIconListService()
        {
            _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("IndexIconList", 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 IndexIconList Query(int Id)
        {
            WebCMSEntities db = new WebCMSEntities();
            IndexIconList editData = db.IndexIconList.FirstOrDefault(m => m.Id == Id) ?? new IndexIconList();
            db.Dispose();
            return editData;
        }

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

        /// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="Id">主键Id</param>
        public void Delete(int Id)
        {
            new DbService(AppConfig.Base.mainTables, _conn).Delete("IndexIconList", 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("IndexIconList", 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.IndexIconList.Add(new IndexIconList()
                {
                    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("IndexIconList", 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;
        }
    }
}