/*
 * 商户
 */

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using MySystem.Models.Main;
using Library;
using LitJson;

namespace MySystem.Service.Main
{
    public class MerchantForMobileService
    {
        static string _conn = ConfigurationManager.AppSettings["SqlConnStr"].ToString();

        /// <summary>
        /// 查询列表
        /// </summary>
        /// <param name="relationData">关联表</param>
        /// <param name="condition">查询条件(sql语句)</param>
        /// <param name="count">总数（输出）</param>
        /// <param name="page">页码</param>
        /// <param name="limit">每页条数</param>
        /// <returns></returns>
        public static List<Dictionary<string, object>> List(List<RelationData> relationData, string condition, out int count, int page = 1, int limit = 30, string orderBy = "Sort desc,Id desc")
        {
            List<string> fields = new List<string>(); //要显示的列
            fields.Add("Id");
            fields.Add("CreateDate"); //添加时间
            fields.Add("Status"); //状态
            fields.Add("Name"); //名称
            fields.Add("Mobile"); //手机号
            fields.Add("Areas"); //所在地区
            fields.Add("Address"); //详细地址
            fields.Add("IsAuth"); //是否认证
            fields.Add("TotalAmount"); //平台总收益
            fields.Add("TotalOrder"); //累计订单
            fields.Add("TotalCustomer"); //累计客户
            fields.Add("TotalUser"); //会员数
            fields.Add("TotalActual"); //营收总额
            fields.Add("LastAddConsumerDate"); //最后加入会员时间
            fields.Add("TotalConsumeCount"); //累计消费次数
            fields.Add("LastConsumeDate"); //最后消费时间
            fields.Add("UserId"); //所属创客
            fields.Add("ActivationStatus"); //激活状态
            fields.Add("ActivationDate"); //激活时间

            Dictionary<string, object> obj = new DbService(AppConfig.Base.mainTables, _conn).IndexData("MerchantForMobile", relationData, orderBy, page, limit, condition, fields);
            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
            count = int.Parse(obj["count"].ToString());
            return diclist;
        }
        public static List<Dictionary<string, object>> List(List<RelationData> relationData, string condition, int page = 1, int limit = 30, string orderBy = "Sort desc,Id desc")
        {
            List<string> fields = new List<string>(); //要显示的列
            fields.Add("Id");
            fields.Add("CreateDate"); //添加时间
            fields.Add("Status"); //状态
            fields.Add("Name"); //名称
            fields.Add("Mobile"); //手机号
            fields.Add("Areas"); //所在地区
            fields.Add("Address"); //详细地址
            fields.Add("IsAuth"); //是否认证
            fields.Add("TotalAmount"); //平台总收益
            fields.Add("TotalOrder"); //累计订单
            fields.Add("TotalCustomer"); //累计客户
            fields.Add("TotalUser"); //会员数
            fields.Add("TotalActual"); //营收总额
            fields.Add("LastAddConsumerDate"); //最后加入会员时间
            fields.Add("TotalConsumeCount"); //累计消费次数
            fields.Add("LastConsumeDate"); //最后消费时间
            fields.Add("UserId"); //所属创客
            fields.Add("ActivationStatus"); //激活状态
            fields.Add("ActivationDate"); //激活时间

            Dictionary<string, object> obj = new DbService(AppConfig.Base.mainTables, _conn).IndexData("MerchantForMobile", relationData, orderBy, page, limit, condition, fields);
            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
            return diclist;
        }

        /// <summary>
        /// 查询一条记录
        /// </summary>
        /// <param name="Mobile">手机号</param>
        /// <returns></returns>
        public static MerchantForMobile Query(string Mobile)
        {
            WebCMSEntities db = new WebCMSEntities();
            MerchantForMobile editData = db.MerchantForMobile.FirstOrDefault(m => m.Mobile == Mobile) ?? new MerchantForMobile();
            db.Dispose();
            return editData;
        }
        public static MerchantForMobile Query(string condition, string fields = "*")
        {
            var MerchantForMobile = new DbService(AppConfig.Base.mainTables, _conn).Query(fields, "MerchantForMobile", condition);
            if (MerchantForMobile.Count > 0)
            {
                return Newtonsoft.Json.JsonConvert.DeserializeObject<MerchantForMobile>(Newtonsoft.Json.JsonConvert.SerializeObject(MerchantForMobile));
            }
            return new MerchantForMobile();
        }

        public static decimal Sum(string condition, string field)
        {
            var dt = new DbService(AppConfig.Base.mainTables, _conn).Query("Sum(" + field + ") " + field, "MerchantForMobile", condition);
            decimal amount = 0;
            if (dt.Count > 0)
            {
                amount = decimal.Parse(dt[field].ToString());
            }
            return amount;
        }

        /// <summary>
        /// 查询记录数
        /// </summary>
        /// <param name="Id">主键Id</param>
        /// <returns></returns>
        public static int Count(string condition = "", string field = "Id")
        {
            var dt = new DbService(AppConfig.Base.mainTables, _conn).Query("Count(" + field + ") " + field, "MerchantForMobile", condition);
            int result = 0;
            if (dt.Count > 0)
            {
                result = int.Parse(dt[field].ToString());
            }
            return result;
        }

        /// <summary>
        /// 查询是否存在
        /// </summary>
        /// <param name="Id">主键Id</param>
        /// <returns></returns>
        public static bool Exist(int Id)
        {
            WebCMSEntities db = new WebCMSEntities();
            bool check = db.MerchantForMobile.Any(m => m.MerchantId == Id);
            db.Dispose();
            return check;
        }

        /// <summary>
        /// 添加数据
        /// </summary>
        /// <param name="Fields">要设置的字段</param>
        /// <returns></returns>
        public static AppResultJson Add(Dictionary<string, object> fields, bool check = true)
        {
            if (check)
            {
                if (string.IsNullOrEmpty(fields["Name"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写名称" };
                }
                if (string.IsNullOrEmpty(fields["Mobile"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写手机号" };
                }

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

        /// <summary>
        /// 修改数据
        /// </summary>
        /// <param name="Fields">要设置的字段</param>
        /// <param name="Id">主键Id</param>
        public static AppResultJson Edit(Dictionary<string, object> fields, int Id, bool check = true)
        {
            if (check)
            {
                if (string.IsNullOrEmpty(fields["Name"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写名称" };
                }
                if (string.IsNullOrEmpty(fields["Mobile"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写手机号" };
                }

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

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

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

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

        // /// <summary>
        // /// 导入数据
        // /// </summary>
        // /// <param name="ExcelData">json数据</param>
        // public static 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.MerchantForMobile.Add(new MerchantForMobile()
        //         {
        //             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 static void ExportExcel(List<RelationData> relationData, string condition)
        // {

        // }
    }
}