/*
 * 商户服务费退还记录
 */

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

namespace MySystem.Service.Main
{
    public class MerchantDepositBackService
    {
     string _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("MerchantDepositBack", 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 MerchantDepositBack Query(int MerchantId)
        {
            WebCMSEntities db = new WebCMSEntities();
            MerchantDepositBack editData = db.MerchantDepositBack.FirstOrDefault(m => m.Status == 1 && m.MerchantId == MerchantId) ?? new MerchantDepositBack();
            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 MerchantDepositBack 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 AppResultJson Add(Dictionary<string, object> fields, bool check = true)
        {
            if (check)
            {

            }
            int Id = new DbService(AppConfig.Base.mainTables, _conn).Add("MerchantDepositBack", fields, 0);
            return new AppResultJson() { Status = "1", Data = Id };
        }

        /// <summary>
        /// 修改数据
        /// </summary>
        /// <param name="Fields">要设置的字段</param>
        /// <param name="Id">主键Id</param>
        public AppResultJson Edit(Dictionary<string, object> fields, int Id, bool check = true)
        {
            if (check)
            {

            }
            new DbService(AppConfig.Base.mainTables, _conn).Edit("MerchantDepositBack", fields, Id);
            return new AppResultJson() { Status = "1", Data = Id };
        }

        /// <summary>
        /// 逻辑删除
        /// </summary>
        /// <param name="Id">主键Id</param>
        public void Remove(int Id)
        {
            Dictionary<string, object> fields = new Dictionary<string, object>();
            fields.Add("Status", -1);
            new DbService(AppConfig.Base.mainTables, _conn).Edit("MerchantDepositBack", fields, Id);
        }

        /// <summary>
        /// 删除数据
        /// </summary>
        /// <param name="Id">主键Id</param>
        public void Delete(int Id)
        {
            new DbService(AppConfig.Base.mainTables, _conn).Delete("MerchantDepositBack", 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("MerchantDepositBack", 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.MerchantDepositBack.Add(new MerchantDepositBack()
            //     {
            //         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 void ExportExcel(List<RelationData> relationData, string condition)
        // {

        // }
    }
}