/*
 * 商户进件资料
 */

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

namespace MySystem.Service.Main2
{
    public class MerchantAddInfoService
    {
        static string _conn = ConfigurationManager.AppSettings["SqlConnStr2"].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>(); //要显示的列，不设置则返回全部字段
            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).IndexData("MerchantAddInfo", 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>(); //要显示的列，不设置则返回全部字段
            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).IndexData("MerchantAddInfo", relationData, orderBy, page, limit, condition, fields);
            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
            return diclist;
        }

        /// <summary>
        /// 查询列表(单表)
        /// </summary>
        /// <param name="fieldList">返回的字段</param>
        /// <param name="condition">查询条件</param>
        /// <param name="page">页码</param>
        /// <param name="limit">每页条数</param>
        /// <param name="orderBy">排序</param>
        /// <returns></returns>
        public static List<Dictionary<string, object>> List(string fieldList, string condition, int page = 1, int limit = 30, string orderBy = "Sort desc,Id desc")
        {
            List<string> fields = fieldList.Split(',').ToList(); //要显示的列
            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).IndexData("MerchantAddInfo", new List<RelationData>(), orderBy, page, limit, condition, fields);
            List<Dictionary<string, object>> diclist = obj["data"] as List<Dictionary<string, object>>;
            return diclist;
        }

        /// <summary>
        /// 查询一条记录
        /// </summary>
        /// <param name="Id">主键Id</param>
        /// <returns></returns>
        public static MerchantAddInfo Query(int Id)
        {
            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("*", "MerchantAddInfo", Id);
            if (obj.Keys.Count > 0)
            {
                return Newtonsoft.Json.JsonConvert.DeserializeObject<MerchantAddInfo>(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
            }
            return new MerchantAddInfo();
        }

        /// <summary>
        /// 查询一条记录
        /// </summary>
        /// <param name="condition">查询条件(sql语句)</param>
        /// <returns></returns>
        public static MerchantAddInfo Query(string condition)
        {
            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("*", "MerchantAddInfo", condition);
            if (obj.Keys.Count > 0)
            {
                return Newtonsoft.Json.JsonConvert.DeserializeObject<MerchantAddInfo>(Newtonsoft.Json.JsonConvert.SerializeObject(obj));
            }
            return new MerchantAddInfo();
        }

        /// <summary>
        /// 查询一条记录
        /// </summary>
        /// <param name="condition">查询条件(sql语句)</param>
        /// <param name="fields">返回的字段</param>
        /// <returns></returns>
        public static Dictionary<string, object> Query(string condition, string fields)
        {
            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query(fields, "MerchantAddInfo", condition);
            return obj;
        }

        public static decimal Sum(string condition, string field)
        {
            decimal amount = 0;
            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("Sum(" + field + ") " + field + "", "MerchantAddInfo", condition);
            if (obj.Keys.Count > 0)
            {
                amount = decimal.Parse(function.CheckNum(obj[field].ToString()));
            }
            return amount;
        }

        /// <summary>
        /// 查询记录数
        /// </summary>
        /// <param name="Id">主键Id</param>
        /// <returns></returns>
        public static int Count(string condition = "", string field = "Id")
        {
            int result = 0;
            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("count(" + field + ") " + field + "", "MerchantAddInfo", condition);
            if (obj.Keys.Count > 0)
            {
                result = int.Parse(function.CheckInt(obj[field].ToString()));
            }
            return result;
        }

        /// <summary>
        /// 查询是否存在
        /// </summary>
        /// <param name="Id">主键Id</param>
        /// <returns></returns>
        public static bool Exist(string condition)
        {
            Dictionary<string, object> obj = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Query("1", "MerchantAddInfo", condition);
            if (obj.Keys.Count > 0)
            {
                return true;
            }
            return false;
        }

        /// <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["BusinessCode"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写申请编号" };
                }
                if (string.IsNullOrEmpty(fields["ContactName"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写管理员姓名" };
                }
                if (string.IsNullOrEmpty(fields["ContactIdNumber"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写管理员身份证件号码" };
                }
                if (function.CheckIdCard(fields["ContactIdNumber"].ToString()) == "")
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写正确的管理员身份证件号码" };
                }
                if (string.IsNullOrEmpty(fields["OpenId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写管理员微信openid" };
                }
                if (string.IsNullOrEmpty(fields["MobilePhone"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写联系手机" };
                }
                if (function.CheckMobile(fields["MobilePhone"].ToString()) == "")
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写正确的联系手机" };
                }
                if (string.IsNullOrEmpty(fields["ContactEmail"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写联系邮箱" };
                }
                if (string.IsNullOrEmpty(fields["SubjectType"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写主体类型" };
                }
                if (string.IsNullOrEmpty(fields["LicenseNumber"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写统一社会信用代码" };
                }
                if (string.IsNullOrEmpty(fields["LegalPerson"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写个体户经营者/法人姓名" };
                }
                if (string.IsNullOrEmpty(fields["MerchantShortname"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写商户简称" };
                }
                if (string.IsNullOrEmpty(fields["SalesScenesType"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写经营场景类型" };
                }
                if (string.IsNullOrEmpty(fields["BizStoreName"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写门店名称" };
                }
                if (string.IsNullOrEmpty(fields["BizAddressCode"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写门店省市编码" };
                }
                if (string.IsNullOrEmpty(fields["BizStoreAddress"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写门店地址" };
                }
                if (string.IsNullOrEmpty(fields["MpAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写服务商公众号APPID" };
                }
                if (string.IsNullOrEmpty(fields["MpSubAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写商家公众号APPID" };
                }
                if (string.IsNullOrEmpty(fields["MiniProgramAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写服务商小程序APPID" };
                }
                if (string.IsNullOrEmpty(fields["MiniProgramSubAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写商家小程序APPID" };
                }
                if (string.IsNullOrEmpty(fields["AppAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写服务商应用APPID" };
                }
                if (string.IsNullOrEmpty(fields["AppSubAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写商家应用APPID" };
                }
                if (string.IsNullOrEmpty(fields["WebDomain"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写互联网网站域名" };
                }
                if (string.IsNullOrEmpty(fields["WebAppId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写互联网网站对应的商家APPID" };
                }
                if (string.IsNullOrEmpty(fields["SubCorpId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写商家企业微信CorpID" };
                }
                if (string.IsNullOrEmpty(fields["SettlementId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写入驻结算规则ID" };
                }
                if (string.IsNullOrEmpty(fields["QualificationType"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写所属行业" };
                }
                if (string.IsNullOrEmpty(fields["ActivitiesId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写优惠费率活动ID" };
                }
                if (string.IsNullOrEmpty(fields["BankAccountType"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写账户类型" };
                }
                if (string.IsNullOrEmpty(fields["AccountName"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写开户名称" };
                }
                if (string.IsNullOrEmpty(fields["AccountBank"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写开户银行" };
                }
                if (string.IsNullOrEmpty(fields["BankAddressCode"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写开户银行省市编码" };
                }
                if (string.IsNullOrEmpty(fields["BankBranchId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写开户银行联行号" };
                }
                if (string.IsNullOrEmpty(fields["BankName"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写开户银行全称" };
                }
                if (string.IsNullOrEmpty(fields["AccountNumber"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写银行账号" };
                }

            }
            int Id = new DbServiceNew(AppConfig.Base.main2Tables, _conn).Add("MerchantAddInfo", 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["BusinessCode"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写申请编号" };
                }
                if (string.IsNullOrEmpty(fields["ContactName"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写管理员姓名" };
                }
                if (string.IsNullOrEmpty(fields["ContactIdNumber"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写管理员身份证件号码" };
                }
                if (function.CheckIdCard(fields["ContactIdNumber"].ToString()) == "")
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写正确的管理员身份证件号码" };
                }
                if (string.IsNullOrEmpty(fields["OpenId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写管理员微信openid" };
                }
                if (string.IsNullOrEmpty(fields["MobilePhone"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写联系手机" };
                }
                if (function.CheckMobile(fields["MobilePhone"].ToString()) == "")
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写正确的联系手机" };
                }
                if (string.IsNullOrEmpty(fields["ContactEmail"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写联系邮箱" };
                }
                if (string.IsNullOrEmpty(fields["SubjectType"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写主体类型" };
                }
                if (string.IsNullOrEmpty(fields["LicenseNumber"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写统一社会信用代码" };
                }
                if (string.IsNullOrEmpty(fields["LegalPerson"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写个体户经营者/法人姓名" };
                }
                if (string.IsNullOrEmpty(fields["MerchantShortname"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写商户简称" };
                }
                if (string.IsNullOrEmpty(fields["SalesScenesType"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写经营场景类型" };
                }
                if (string.IsNullOrEmpty(fields["BizStoreName"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写门店名称" };
                }
                if (string.IsNullOrEmpty(fields["BizAddressCode"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写门店省市编码" };
                }
                if (string.IsNullOrEmpty(fields["BizStoreAddress"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写门店地址" };
                }
                if (string.IsNullOrEmpty(fields["MpAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写服务商公众号APPID" };
                }
                if (string.IsNullOrEmpty(fields["MpSubAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写商家公众号APPID" };
                }
                if (string.IsNullOrEmpty(fields["MiniProgramAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写服务商小程序APPID" };
                }
                if (string.IsNullOrEmpty(fields["MiniProgramSubAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写商家小程序APPID" };
                }
                if (string.IsNullOrEmpty(fields["AppAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写服务商应用APPID" };
                }
                if (string.IsNullOrEmpty(fields["AppSubAppid"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写商家应用APPID" };
                }
                if (string.IsNullOrEmpty(fields["WebDomain"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写互联网网站域名" };
                }
                if (string.IsNullOrEmpty(fields["WebAppId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写互联网网站对应的商家APPID" };
                }
                if (string.IsNullOrEmpty(fields["SubCorpId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写商家企业微信CorpID" };
                }
                if (string.IsNullOrEmpty(fields["SettlementId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写入驻结算规则ID" };
                }
                if (string.IsNullOrEmpty(fields["QualificationType"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写所属行业" };
                }
                if (string.IsNullOrEmpty(fields["ActivitiesId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写优惠费率活动ID" };
                }
                if (string.IsNullOrEmpty(fields["BankAccountType"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写账户类型" };
                }
                if (string.IsNullOrEmpty(fields["AccountName"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写开户名称" };
                }
                if (string.IsNullOrEmpty(fields["AccountBank"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写开户银行" };
                }
                if (string.IsNullOrEmpty(fields["BankAddressCode"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写开户银行省市编码" };
                }
                if (string.IsNullOrEmpty(fields["BankBranchId"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写开户银行联行号" };
                }
                if (string.IsNullOrEmpty(fields["BankName"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写开户银行全称" };
                }
                if (string.IsNullOrEmpty(fields["AccountNumber"].ToString()))
                {
                    return new AppResultJson() { Status = "-1", Info = "请填写银行账号" };
                }

            }
            new DbServiceNew(AppConfig.Base.main2Tables, _conn).Edit("MerchantAddInfo", 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 DbServiceNew(AppConfig.Base.main2Tables, _conn).Edit("MerchantAddInfo", fields, Id);
        }

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

        /// <summary>
        /// 排序
        /// </summary>
        /// <param name="Id">主键Id</param>
        /// <param name="Sort">排序序号</param>
        public static void Sort(int Id, int Sort)
        {
            new DbServiceNew(AppConfig.Base.main2Tables, _conn).Sort("MerchantAddInfo", 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.MerchantAddInfo.Add(new MerchantAddInfo()
            //     {
            //         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)
        // {

        // }
    }
}