using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Microsoft.AspNetCore.Authorization;
using System.Web;
using MySystem.Models.Main2;
using MySystem.Service.Main2;
using LitJson;
using Library;

namespace MySystem.Areas.Api.Controllers.v1
{
    [Area("Api")]
    [Route("/v1/QrCodePlateMain/[controller]/[action]")]
    public class MerchantAddInfoController : BaseController
    {
        public MerchantAddInfoController(IHttpContextAccessor accessor) : base(accessor)
        {
        }

        #region 进件管理-银联商户列表
        [Authorize]
        public JsonResult UnionPayList(string value)
        {
            value = PublicFunction.DesDecrypt(value); ;
            JsonData data = JsonMapper.ToObject(value);
            List<Dictionary<string, object>> dataList = UnionPayListDo(value);
            return Json(new AppResultJson() { Status = "1", Info = "", Data = dataList });
        }
        private List<Dictionary<string, object>> UnionPayListDo(string value)
        {
            JsonData data = JsonMapper.ToObject(value);
            string SubjectType = data["SubjectType"].ToString(); //主体类型
            string CertMerchantName = data["CertMerchantName"].ToString(); //商户名称
            string ServicePhone = data["ServicePhone"].ToString(); //客服电话
            string MakerCode = data["MakerCode"].ToString(); //所属创客编号
            string Status = data["Status"].ToString(); //商户状态
            int pageSize = int.Parse(function.CheckInt(data["page_size"].ToString()));
            int pageNum = int.Parse(function.CheckInt(data["page_num"].ToString()));
            string condition = "";
            if (!string.IsNullOrEmpty(data["SubjectType"].ToString()))
            {
                condition += " and SubjectType='" + SubjectType + "'";
            }
            if (!string.IsNullOrEmpty(data["CertMerchantName"].ToString()))
            {
                condition += " and CertMerchantName='" + CertMerchantName + "'";
            }
            if (!string.IsNullOrEmpty(data["ServicePhone"].ToString()))
            {
                condition += " and ServicePhone='" + ServicePhone + "'";
            }
            List<RelationData> relationData = new List<RelationData>();
            List<Dictionary<string, object>> dataList = new List<Dictionary<string, object>>();
            List<Dictionary<string, object>> source = MerchantAddInfoService.List(relationData, condition, pageNum, pageSize);
            foreach (Dictionary<string, object> subdata in source)
            {
                Dictionary<string, object> curData = new Dictionary<string, object>();
                curData.Add("SubjectType", subdata["SubjectType"].ToString()); //主体类型
                curData.Add("CertMerchantName", subdata["CertMerchantName"].ToString()); //商户名称
                curData.Add("ServicePhone", subdata["ServicePhone"].ToString()); //客服电话
                curData.Add("BizStoreAddress", subdata["BizStoreAddress"].ToString()); //门店地址
                curData.Add("CreateDate", ""); //进件时间
                curData.Add("MakerCode", ""); //所属创客编号
                curData.Add("RealName", ""); //所属创客姓名
                curData.Add("AuditInfo", ""); //审核平台

                dataList.Add(curData);
            }
            return dataList;
        }
        #endregion



        #region 进件管理-银联查看失败原因
        [Authorize]
        public JsonResult UnionPayQueryFailReason(string value)
        {
            value = PublicFunction.DesDecrypt(value); ;
            JsonData data = JsonMapper.ToObject(value);
            Dictionary<string, object> Obj = UnionPayQueryFailReasonDo(value);
            return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
        }
        private Dictionary<string, object> UnionPayQueryFailReasonDo(string value)
        {
            JsonData data = JsonMapper.ToObject(value);
            string MerchantId = data["MerchantId"].ToString(); //商户Id
            Dictionary<string, object> Obj = new Dictionary<string, object>();
            MerchantAddInfo query = new MerchantAddInfo();
            // query = MerchantAddInfoService.Query(id);
            Obj.Add("Info", ""); //失败原因

            return Obj;
        }
        #endregion



        #region 进件管理-银联进件详情
        [Authorize]
        public JsonResult UnionPayDetail(string value)
        {
            value = PublicFunction.DesDecrypt(value); ;
            JsonData data = JsonMapper.ToObject(value);
            Dictionary<string, object> Obj = UnionPayDetailDo(value);
            return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
        }
        private Dictionary<string, object> UnionPayDetailDo(string value)
        {
            JsonData data = JsonMapper.ToObject(value);
            string MerchantId = data["MerchantId"].ToString(); //商户Id
            Dictionary<string, object> Obj = new Dictionary<string, object>();
            MerchantAddInfo query = new MerchantAddInfo();
            // query = MerchantAddInfoService.Query(id);
            Obj.Add("ContactName", ""); //管理员姓名
            Obj.Add("ContactIdNumber", ""); //管理员身份证件号码
            Obj.Add("OpenId", ""); //管理员微信openid
            Obj.Add("MobilePhone", ""); //联系手机
            Obj.Add("ContactEmail", ""); //联系邮箱
            Obj.Add("SubjectType", ""); //主体类型
            Obj.Add("SubjectTypeName", ""); //主体类型名称
            Obj.Add("LicenseCopy", ""); //营业执照照片
            Obj.Add("LicenseNumber", ""); //统一社会信用代码
            Obj.Add("LegalPerson", ""); //个体户经营者/法人姓名
            Obj.Add("CertCopy", ""); //登记证书照片
            Obj.Add("CertType", ""); //登记证书类型
            Obj.Add("CertNumber", ""); //证书号
            Obj.Add("CertMerchantName", ""); //商户名称
            Obj.Add("CompanyAddress", ""); //注册地址
            Obj.Add("CertLegalPerson", ""); //法人姓名
            Obj.Add("PeriodBegin", ""); //有效期限开始日期
            Obj.Add("PeriodEnd", ""); //有效期限结束日期
            Obj.Add("OrganizationCopy", ""); //组织机构代码证照片
            Obj.Add("OrganizationCode", ""); //组织机构代码
            Obj.Add("OrgPeriodBegin", ""); //组织机构代码证有效期开始日期
            Obj.Add("OrgPeriodEnd", ""); //组织机构代码证有效期结束日期
            Obj.Add("CertificateLetterCopy", ""); //单位证明函照片
            Obj.Add("IdDocType", ""); //证件类型
            Obj.Add("Owner", ""); //经营者/法人是否为受益人
            Obj.Add("UboInfoIdType", ""); //最终受益人证件类型
            Obj.Add("UboInfoIdCardCopy", ""); //最终受益人身份证人像面照片
            Obj.Add("UboInfoIdCardNational", ""); //身份证国徽面照片
            Obj.Add("UboInfoIdDocCopy", ""); //最终受益人证件照片
            Obj.Add("UboInfoName", ""); //受益人姓名
            Obj.Add("UboInfoIdNumber", ""); //最终受益人证件号码
            Obj.Add("UboInfoIdPeriodBegin", ""); //证件有效期开始时间
            Obj.Add("UboInfoIdPeriodEnd", ""); //证件有效期结束时间
            Obj.Add("MerchantShortname", ""); //商户简称
            Obj.Add("ServicePhone", ""); //客服电话
            Obj.Add("BizStoreName", ""); //门店名称
            Obj.Add("BizAddressCode", ""); //门店省市编码
            Obj.Add("BizStoreAddress", ""); //门店地址
            Obj.Add("StoreEntrancePic", ""); //门店门头照片
            Obj.Add("IndoorPic", ""); //店内环境照片
            Obj.Add("BizSubAppid", ""); //线下场所对应的商家APPID
            Obj.Add("MpAppid", ""); //服务商公众号APPID
            Obj.Add("MpSubAppid", ""); //商家公众号APPID
            Obj.Add("MpPics", ""); //公众号页面截图
            Obj.Add("MiniProgramAppid", ""); //服务商小程序APPID
            Obj.Add("MiniProgramSubAppid", ""); //商家小程序APPID
            Obj.Add("MiniProgramPics", ""); //小程序截图
            Obj.Add("AppAppid", ""); //服务商应用APPID
            Obj.Add("AppSubAppid", ""); //商家应用APPID
            Obj.Add("AppPics", ""); //APP截图
            Obj.Add("WebDomain", ""); //互联网网站域名
            Obj.Add("WebAuthorisation", ""); //网站授权函
            Obj.Add("WebAppId", ""); //互联网网站对应的商家APPID
            Obj.Add("SubCorpId", ""); //商家企业微信CorpID
            Obj.Add("WeworkPics", ""); //企业微信页面截图
            Obj.Add("SettlementId", ""); //入驻结算规则ID
            Obj.Add("QualificationType", ""); //所属行业
            Obj.Add("Qualifications", ""); //特殊资质图片
            Obj.Add("ActivitiesId", ""); //优惠费率活动ID
            Obj.Add("ActivitiesRate", ""); //优惠费率活动值
            Obj.Add("BankAccountType", ""); //账户类型
            Obj.Add("BankAccountTypeName", ""); //账户类型名称
            Obj.Add("AccountName", ""); //开户名称
            Obj.Add("AccountBank", ""); //开户银行
            Obj.Add("BankAddressCode", ""); //开户银行省市编码
            Obj.Add("BankBranchId", ""); //开户银行联行号
            Obj.Add("BankName", ""); //开户银行全称
            Obj.Add("AccountNumber", ""); //银行账号
            Obj.Add("ApplymentId", ""); //微信支付申请单号
            Obj.Add("SubMchid", ""); //特约商户号
            Obj.Add("SignUrl", ""); //超级管理员签约链接
            Obj.Add("ApplymentState", ""); //申请单状态
            Obj.Add("AuditDetail", ""); //驳回原因详情
            Obj.Add("IdCardCopy", ""); //身份证人像面照片
            Obj.Add("IdCardNational", ""); //身份证国徽面照片
            Obj.Add("IdCardName", ""); //身份证姓名
            Obj.Add("IdCardNumber", ""); //身份证号码
            Obj.Add("IdCardAddress", ""); //身份证居住地址
            Obj.Add("CardPeriodBegin", ""); //身份证有效期开始时间
            Obj.Add("CardPeriodEnd", ""); //身份证有效期结束时间
            Obj.Add("Status", ""); //状态
            Obj.Add("CreateDate", ""); //创建时间
            Obj.Add("AlipayAccount", ""); //支付宝账号
            Obj.Add("MchtNo", ""); //好哒商户号
            Obj.Add("BankCard", ""); //收款人银行卡照片
            Obj.Add("PersonWithIdCard", ""); //法人手持身份证正面
            Obj.Add("IndustryLicense1", ""); //行业许可证
            Obj.Add("Extra1", ""); //补充资料
            Obj.Add("CheckstandImg", ""); //收银台
            Obj.Add("SalesScenesType", ""); //经营场景类型
            Obj.Add("OpenAccountLicenses", ""); //开户许可证
            Obj.Add("ResserveMobile", ""); //银行预留手机号
            Obj.Add("ChannelKind", ""); //商户类型
            Obj.Add("OpenBankAccout", ""); //开户许可证-银行卡号
            Obj.Add("OpenBankAccName", ""); //开户许可证-开户名
            Obj.Add("OpenBankName", ""); //开户许可证-开户行全称
            Obj.Add("OpenBankRegionCode", ""); //开户银行支行区域码

            return Obj;
        }
        #endregion



        #region 进件管理-银联提交进件
        [Authorize]
        public JsonResult UnionPaySubmit(string value)
        {
            value = PublicFunction.DesDecrypt(value); ;
            JsonData data = JsonMapper.ToObject(value);
            AppResultJson result = UnionPaySubmitDo(value);
            return Json(new AppResultJson() { Status = result.Status, Info = result.Info, Data = result.Data });
        }
        private AppResultJson UnionPaySubmitDo(string value)
        {
            JsonData data = JsonMapper.ToObject(value);
            string MerchantId = data["MerchantId"].ToString(); //商户Id
            Dictionary<string, object> Obj = new Dictionary<string, object>();
            MerchantAddInfo query = new MerchantAddInfo();
            Dictionary<string, object> fields = new Dictionary<string, object>();
            fields.Add("create_date", DateTime.Now); //创建时间
            fields.Add("update_date", DateTime.Now); //修改时间
            AppResultJson resultJson = MerchantAddInfoService.Add(fields, false);

            return new AppResultJson() { Status = "1", Info = "", Data = Obj };
        }
        #endregion



        #region 商户管理-银联查询商户交易信息
        [Authorize]
        public JsonResult UnionPayQueryMerchantTradeInfo(string value)
        {
            value = PublicFunction.DesDecrypt(value); ;
            JsonData data = JsonMapper.ToObject(value);
            Dictionary<string, object> Obj = UnionPayQueryMerchantTradeInfoDo(value);
            return Json(new AppResultJson() { Status = "1", Info = "", Data = Obj });
        }
        private Dictionary<string, object> UnionPayQueryMerchantTradeInfoDo(string value)
        {
            JsonData data = JsonMapper.ToObject(value);
            string MerchantName = data["MerchantName"].ToString(); //商户名称
            string Mobile = data["Mobile"].ToString(); //手机号码
            string MakerCode = data["MakerCode"].ToString(); //所属创客
            string MatchNo = data["MatchNo"].ToString(); //商户号
            string AliPID = data["AliPID"].ToString(); //支付宝PID
            string WeChatNo = data["WeChatNo"].ToString(); //微信商户号
            string SubjectType = data["SubjectType"].ToString(); //主体类型(1 个体 2 企业)
            Dictionary<string, object> Obj = new Dictionary<string, object>();
            MerchantAddInfo query = new MerchantAddInfo();
            // query = MerchantAddInfoService.Query(id);
            Obj.Add("MerchantName", ""); //商户名称
            Obj.Add("Mobile", ""); //手机号码
            Obj.Add("MakerCode", ""); //所属创客
            Obj.Add("SubjectType", ""); //主体类型(1 个体 2 企业)
            Obj.Add("AliPID", ""); //支付宝PID
            Obj.Add("WeChatNo", ""); //微信商户号
            Obj.Add("OrderCount", ""); //订单总数
            Obj.Add("TradeAmount", ""); //营业总金额
            Obj.Add("InComeAmount", ""); //实收总金额

            return Obj;
        }
        #endregion


    }
}
