namespace BLL
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    public static class SysConstSetService
    {
        private static string _CNCECPath;
        private static string _CncecEsbPath;
        private static string _CNCECToken;
        private static string _CNCECTokenExTime;
        private static string _ClientId;
        public static string CNCECPath
        {
            get
            {
                var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "集团接口地址" select x).ToList().FirstOrDefault();
                if (sysSet5 != null)
                {
                    _CNCECPath = sysSet5.SetValue;
                }
                else
                {
                    _CNCECPath = "";
                }
                return _CNCECPath;
            }
            set
            {
                _CNCECPath = value;
            }
        }
        public static string CncecEsbPath
        {
            get
            {
                var sysSet5 = (from x in Funs.DB.Sys_Const where x.ConstText == "集团ESB地址" select x).ToList().FirstOrDefault();
                if (sysSet5 != null)
                {
                    _CncecEsbPath = sysSet5.ConstValue;
                }
                else
                {
                    _CncecEsbPath = "";
                }
                return _CncecEsbPath;
            }
            set
            {
                _CncecEsbPath = value;
            }
        }
        public static string ClientId
        {
            get
            {
                var sysSet5 = (from x in Funs.DB.Sys_Const where x.ConstText == "ClientId" select x).ToList().FirstOrDefault();
                if (sysSet5 != null)
                {
                    _ClientId = sysSet5.ConstValue;
                }
                else
                {
                    _ClientId = "";
                }
                return _ClientId;
            }
            set
            {
                _ClientId = value;
            }
        }
        public static string CNCECToken
        {
            get
            {
                var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "token" select x).ToList().FirstOrDefault();
                if (sysSet5 != null)
                {
                    _CNCECToken = sysSet5.SetValue;
                }
                else
                {
                    _CNCECToken = "";
                }
                return _CNCECToken;
            }
        }
        public static string CNCECTTokenExTime
        {
            get
            {
                var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "token失效时间" select x).ToList().FirstOrDefault();
                if (sysSet5 != null)
                {
                    _CNCECTokenExTime = sysSet5.SetValue;
                }
                else
                {
                    _CNCECTokenExTime = "";
                }
                return _CNCECTokenExTime;
            }
        }
        public static void SetToken(string token)
        {
            Model.Sys_Set sysSet = Funs.DB.Sys_Set.FirstOrDefault(x => x.SetName == "token");
            if (sysSet != null)
            {
                if (!string.IsNullOrEmpty(token))
                {
                    sysSet.SetValue = token;
                }
                Funs.DB.SubmitChanges();
            }
            else
            {
                Model.Sys_Set newSysSet5 = new Model.Sys_Set();
                var q = (from x in Funs.DB.Sys_Set orderby x.SetId descending select x).FirstOrDefault();
                if (q == null)
                {
                    newSysSet5.SetId = 1;
                }
                else
                {
                    newSysSet5.SetId = q.SetId + 1;
                }
                if (!string.IsNullOrEmpty(token))
                {
                    newSysSet5.SetValue = token;
                }
                newSysSet5.SetName = "token";
                Funs.DB.Sys_Set.InsertOnSubmit(newSysSet5);
                Funs.DB.SubmitChanges();
            }
        }
        public static void SetTokenExpirationTime(string ExpirationTime)
        {
            Model.Sys_Set sysSet = Funs.DB.Sys_Set.FirstOrDefault(x => x.SetName == "token失效时间");
            if (sysSet != null)
            {
                if (!string.IsNullOrEmpty(ExpirationTime))
                {
                    sysSet.SetValue = ExpirationTime;
                }
                Funs.DB.SubmitChanges();
            }
            else
            {
                Model.Sys_Set newSysSet5 = new Model.Sys_Set();
                var q = (from x in Funs.DB.Sys_Set orderby x.SetId descending select x).FirstOrDefault();
                if (q == null)
                {
                    newSysSet5.SetId = 1;
                }
                else
                {
                    newSysSet5.SetId = q.SetId + 1;
                }
                if (!string.IsNullOrEmpty(ExpirationTime))
                {
                    newSysSet5.SetValue = ExpirationTime;
                }
                newSysSet5.SetName = "token失效时间";
                Funs.DB.Sys_Set.InsertOnSubmit(newSysSet5);
                Funs.DB.SubmitChanges();
            }
        }
        #region 五环IDP
        private static string _WuHuanIDPPath;
        //private static string _IDPToken;
        //private static string _IDPTokenExTime;
        public static string WuHuanIDPPath
        {
            get
            {
                var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "IDP接口地址" select x).ToList().FirstOrDefault();
                if (sysSet5 != null)
                {
                    _WuHuanIDPPath = sysSet5.SetValue;
                }
                else
                {
                    _WuHuanIDPPath = "";
                }
                return _WuHuanIDPPath;
            }
            set
            {
                _WuHuanIDPPath = value;
            }
        }
        #endregion
        #region 五环PMP
        private static string _WuHuanPMPPath;
        private static string _PMPToken;
        private static string _PMPTokenExTime;
        public static string WuHuanPMPPath
        {
            get
            {
                var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "PMP接口地址" select x).ToList().FirstOrDefault();
                if (sysSet5 != null)
                {
                    _WuHuanPMPPath = sysSet5.SetValue;
                }
                else
                {
                    _WuHuanPMPPath = "";
                }
                return _WuHuanPMPPath;
            }
            set
            {
                _WuHuanPMPPath = value;
            }
        }
        public static string WuHuanPMPToken
        {
            get
            {
                var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "PMPToken" select x).ToList().FirstOrDefault();
                if (sysSet5 != null)
                {
                    _PMPToken = sysSet5.SetValue;
                }
                else
                {
                    _PMPToken = "";
                }
                return _PMPToken;
            }
        }
        public static string WuHuanPMPTokenExTime
        {
            get
            {
                var sysSet5 = (from x in Funs.DB.Sys_Set where x.SetName == "PMPTokenExTime" select x).ToList().FirstOrDefault();
                if (sysSet5 != null)
                {
                    _PMPTokenExTime = sysSet5.SetValue;
                }
                else
                {
                    _PMPTokenExTime = "";
                }
                return _PMPTokenExTime;
            }
        }
        public static void SetWuHuanPMPToken(string token)
        {
            Model.Sys_Set sysSet = Funs.DB.Sys_Set.FirstOrDefault(x => x.SetName == "PMPToken");
            if (sysSet != null)
            {
                if (!string.IsNullOrEmpty(token))
                {
                    sysSet.SetValue = token;
                }
                Funs.DB.SubmitChanges();
            }
            else
            {
                Model.Sys_Set newSysSet5 = new Model.Sys_Set();
                var q = (from x in Funs.DB.Sys_Set orderby x.SetId descending select x).FirstOrDefault();
                if (q == null)
                {
                    newSysSet5.SetId = 1;
                }
                else
                {
                    newSysSet5.SetId = q.SetId + 1;
                }
                if (!string.IsNullOrEmpty(token))
                {
                    newSysSet5.SetValue = token;
                }
                newSysSet5.SetName = "PMPToken";
                Funs.DB.Sys_Set.InsertOnSubmit(newSysSet5);
                Funs.DB.SubmitChanges();
            }
        }
        public static void SetWuHuanPMPTokenExpirationTime(string ExpirationTime)
        {
            Model.Sys_Set sysSet = Funs.DB.Sys_Set.FirstOrDefault(x => x.SetName == "PMPTokenExTime");
            if (sysSet != null)
            {
                if (!string.IsNullOrEmpty(ExpirationTime))
                {
                    sysSet.SetValue = ExpirationTime;
                }
                Funs.DB.SubmitChanges();
            }
            else
            {
                Model.Sys_Set newSysSet5 = new Model.Sys_Set();
                var q = (from x in Funs.DB.Sys_Set orderby x.SetId descending select x).FirstOrDefault();
                if (q == null)
                {
                    newSysSet5.SetId = 1;
                }
                else
                {
                    newSysSet5.SetId = q.SetId + 1;
                }
                if (!string.IsNullOrEmpty(ExpirationTime))
                {
                    newSysSet5.SetValue = ExpirationTime;
                }
                newSysSet5.SetName = "PMPTokenExTime";
                Funs.DB.Sys_Set.InsertOnSubmit(newSysSet5);
                Funs.DB.SubmitChanges();
            }
        }
        #endregion
        /// 
        /// 获取及格分数
        /// 
        /// 
        public static int getPassScore()
        {
            using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
            {
                int passScore = 80;
                var testRule =db.Sys_TestRule.FirstOrDefault();
                if (testRule != null)
                {
                    passScore = testRule.PassingScore;
                }
                return passScore;
            }
        }
        #region 菜单编码模板
        /// 
        /// 获取菜单编码模板信息 根据MenuId
        /// 
        /// 
        /// 
        public static Model.Sys_CodeTemplateRule GetCodeTemplateRuleByMenuId(string menuId)
        {
            return Funs.DB.Sys_CodeTemplateRule.FirstOrDefault(x => x.MenuId == menuId);
        }
        
        /// 
        /// 菜单编码模板信息
        /// 
        /// 
        public static void AddCodeTemplateRule(Model.Sys_CodeTemplateRule codeTemplateRule)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Sys_CodeTemplateRule newCodeTemplateRule = new Model.Sys_CodeTemplateRule
            {
                CodeTemplateRuleId = SQLHelper.GetNewID(typeof(Model.Sys_CodeTemplateRule)),
                MenuId = codeTemplateRule.MenuId,
                Template = codeTemplateRule.Template,
                Symbol = codeTemplateRule.Symbol,
                IsProjectCode = codeTemplateRule.IsProjectCode,
                Prefix = codeTemplateRule.Prefix,
                IsUnitCode = codeTemplateRule.IsUnitCode,
                Digit = codeTemplateRule.Digit,
                IsFileCabinetA = codeTemplateRule.IsFileCabinetA,
                IsFileCabinetB = codeTemplateRule.IsFileCabinetB
            };
            db.Sys_CodeTemplateRule.InsertOnSubmit(newCodeTemplateRule);
            db.SubmitChanges();
        }
        /// 
        /// 修改菜单编码模板信息
        /// 
        /// 
        public static void UpdateCodeTemplateRule(Model.Sys_CodeTemplateRule codeTemplateRule)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Sys_CodeTemplateRule updateCodeTemplateRule = db.Sys_CodeTemplateRule.FirstOrDefault(e => e.MenuId == codeTemplateRule.MenuId);
            if (updateCodeTemplateRule != null)
            {
                updateCodeTemplateRule.Template = codeTemplateRule.Template;
                updateCodeTemplateRule.Symbol = codeTemplateRule.Symbol;
                updateCodeTemplateRule.IsProjectCode = codeTemplateRule.IsProjectCode;
                updateCodeTemplateRule.Prefix = codeTemplateRule.Prefix;
                updateCodeTemplateRule.IsUnitCode = codeTemplateRule.IsUnitCode;
                updateCodeTemplateRule.Digit = codeTemplateRule.Digit;
                updateCodeTemplateRule.IsFileCabinetA = codeTemplateRule.IsFileCabinetA;
                updateCodeTemplateRule.IsFileCabinetB = codeTemplateRule.IsFileCabinetB;   
                db.SubmitChanges();
            }
        }
        #endregion
        #region 业务审批流程
        /// 
        /// 获取业务审批流程信息 根据MenuId
        /// 
        /// 
        /// 
        public static Model.Sys_MenuFlowOperate GetMenuFlowOperateByMenuId(string menuId)
        {
            return Funs.DB.Sys_MenuFlowOperate.FirstOrDefault(x => x.MenuId == menuId);
        }
        /// 
        /// 业务审批流程信息
        /// 
        /// 
        public static void AddMenuFlowOperate(Model.Sys_MenuFlowOperate MenuFlowOperate)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Sys_MenuFlowOperate newMenuFlowOperate = new Model.Sys_MenuFlowOperate
            {
                FlowOperateId = SQLHelper.GetNewID(typeof(Model.Sys_MenuFlowOperate)),
                MenuId = MenuFlowOperate.MenuId,
                FlowStep = MenuFlowOperate.FlowStep,
                AuditFlowName = MenuFlowOperate.AuditFlowName,
                RoleId = MenuFlowOperate.RoleId,
                IsFlowEnd = MenuFlowOperate.IsFlowEnd
            };
            db.Sys_MenuFlowOperate.InsertOnSubmit(newMenuFlowOperate);
            db.SubmitChanges();
        }
        /// 
        /// 修改业务审批流程信息
        /// 
        /// 
        public static void UpdateMenuFlowOperate(Model.Sys_MenuFlowOperate MenuFlowOperate)
        {
            Model.SGGLDB db = Funs.DB;
            Model.Sys_MenuFlowOperate updateMenuFlowOperate = db.Sys_MenuFlowOperate.FirstOrDefault(e => e.MenuId == MenuFlowOperate.MenuId);
            if (updateMenuFlowOperate != null)
            {
                updateMenuFlowOperate.MenuId = MenuFlowOperate.MenuId;
                updateMenuFlowOperate.FlowStep = MenuFlowOperate.FlowStep;
                updateMenuFlowOperate.AuditFlowName = MenuFlowOperate.AuditFlowName;
                updateMenuFlowOperate.RoleId = MenuFlowOperate.RoleId;
                updateMenuFlowOperate.IsFlowEnd = MenuFlowOperate.IsFlowEnd;
                db.SubmitChanges();
            }
        }
        /// 
        /// 删除工作流信息
        /// 
        /// 
        public static void DeleteMenuFlowOperateByFlowOperateId(string flowOperateId)
        {
            var flow = Funs.DB.Sys_MenuFlowOperate.FirstOrDefault(e => e.FlowOperateId == flowOperateId);
            if (flow != null)
            {
                Funs.DB.Sys_MenuFlowOperate.DeleteOnSubmit(flow);
                Funs.DB.SubmitChanges();
            }
        }
        #region 删除审核步骤
        /// 
        /// 删除审核步骤
        /// 
        /// 主键ID
        /// 
        public static void DeleteMenuFlowOperateLicense(string flowOperateId)
        {
            var delteFlow = Funs.DB.Sys_MenuFlowOperate.FirstOrDefault(x => x.FlowOperateId == flowOperateId);
            if (delteFlow != null)
            {
                var isSort = Funs.DB.Sys_MenuFlowOperate.FirstOrDefault(x => x.FlowStep == delteFlow.FlowStep);
                if (isSort == null)
                {
                    var updateSort = from x in Funs.DB.Sys_MenuFlowOperate
                                     where  x.FlowStep > delteFlow.FlowStep
                                     select x;
                    foreach (var item in updateSort)
                    {
                        item.FlowStep -= 1;
                    }
                }
                else
                {
                    var isGroup = Funs.DB.Sys_MenuFlowOperate.FirstOrDefault(x => x.FlowStep == delteFlow.FlowStep && x.GroupNum == delteFlow.GroupNum);
                    if (isGroup == null)
                    {
                        var updateGroup = from x in Funs.DB.Sys_MenuFlowOperate
                                          where x.FlowStep == delteFlow.FlowStep && x.GroupNum > delteFlow.GroupNum
                                          select x;
                        foreach (var item in updateGroup)
                        {
                            item.GroupNum -= 1;
                        }
                    }
                    else
                    {
                        var isOrder = Funs.DB.Sys_MenuFlowOperate.FirstOrDefault(x =>  x.FlowStep == delteFlow.FlowStep && x.GroupNum == delteFlow.GroupNum && x.OrderNum > delteFlow.OrderNum);
                        if (isOrder != null)
                        {
                            isOrder.OrderNum -= 1;
                        }
                    }
                }
                Funs.DB.Sys_MenuFlowOperate.DeleteOnSubmit(delteFlow);
                Funs.DB.SubmitChanges();
            }
        }
        #endregion
        #endregion
    }
}