/// <summary>
        /// 升级的校验
        /// </summary>
        /// <param name="organization"></param>
        /// <returns></returns>
        private OperationResult ValidateUpdate(DetailedOrganizationDTO organization, out OrganizationDAO organizationDao,
                                               out OrganizationAttributeDAO organizationAttributeDao)
        {
            OperationResult result = new OperationResult(true);

            organizationDao          = null;
            organizationAttributeDao = null;

            if (organization == null)
            {
                result.Success = false;
                result.Messages.Add("传入参数不能为空!");

                return(result);
            }

            if (string.IsNullOrWhiteSpace(organization.Id))
            {
                result.Success = false;
                result.Messages.Add("id 不能为空");

                return(result);
            }

            var filter = new OrganizationFilter();

            filter.Id       = organization.Id;
            filter.IsActive = true;

            organizationDao          = _dal.GetOrganization(filter);
            organizationAttributeDao = _dal.GetOrganizationAttribute(filter);
            //组织不存在
            if (organizationDao == null || organizationAttributeDao == null)
            {
                result.Success = false;
                result.Messages.Add("组织不存在");

                return(result);
            }

            OperationResult dataValidateResult = Validate(organization, true);

            if (!dataValidateResult.Success)
            {
                result.Success = false;
                result.Messages.AddRange(dataValidateResult.Messages);
            }

            #region 向导部分校验

            OperationResult validateWizardStepResult = ValidateWizardSetp(organization, organizationAttributeDao);
            if (!validateWizardStepResult.Success)
            {
                result.Success = false;
                result.Messages.AddRange(validateWizardStepResult.Messages);
            }

            #endregion
            return(result);
        }
        /// <summary>
        /// 创建一个组织
        /// </summary>
        /// <param name="organization"></param>
        /// <returns></returns>
        public OrganizationDTO CreateOrganization(OrganizationDTO organization)
        {
            OrganizationDAO dao = organization.Convert();

            dao.MItemID   = GuidUtility.GetGuid();
            dao.MIsActive = false;
            dao.MIsDelete = false;

            OrganizationAttributeDAO attributeDao = new OrganizationAttributeDAO();

            attributeDao.MItemID         = GuidUtility.GetGuid();
            attributeDao.MOrgID          = dao.MItemID;
            attributeDao.MConversionDate = DateTime.Now;
            attributeDao.MExpiredDate    = DateTime.Now.AddDays(30);
            attributeDao.MRegProgress    = (int)WizardStepType.Created;
            attributeDao.MIsActive       = true;

            OrganizationUserRelationDAO organizationUserRelation = new OrganizationUserRelationDAO();

            organizationUserRelation.MItemID   = GuidUtility.GetGuid();
            organizationUserRelation.MOrgID    = dao.MItemID;
            organizationUserRelation.MUserID   = GetCurrentUserId();
            organizationUserRelation.MIsActive = true;


            var client = _orm.GetSqlClient <SqlSugarClient>();

            try
            {
                client.BeginTran();

                client.Insertable(dao).ExecuteCommand();
                client.Insertable(attributeDao).ExecuteCommand();
                client.Insertable(organizationUserRelation).ExecuteCommand();
                client.CommitTran();
                organization.Id = dao.MItemID;

                return(organization);
            }
            catch (Exception ex)
            {
                client.RollbackTran();

                throw ex;
            }
        }
        /// <summary>
        /// 更新组织信息
        /// </summary>
        /// <param name="organization"></param>
        /// <param name="organizationAttribute"></param>
        /// <returns></returns>
        public bool Update(OrganizationDAO organization, OrganizationAttributeDAO organizationAttribute)
        {
            var client = _orm.GetSqlClient <SqlSugarClient>();

            try
            {
                client.BeginTran();

                client.GetSimpleClient <OrganizationDAO>().Update(organization);
                client.GetSimpleClient <OrganizationAttributeDAO>().Update(organizationAttribute);

                client.CommitTran();

                return(true);
            }
            catch (Exception ex)
            {
                client.RollbackTran();

                throw ex;
            }
        }
        /// <summary>
        /// 向导部分的逻辑校验
        /// </summary>
        /// <param name="organization"></param>
        /// <param name="organizationAttributeDao"></param>
        /// <returns></returns>
        private OperationResult ValidateWizardSetp(DetailedOrganizationDTO organization, OrganizationAttributeDAO organizationAttributeDao)
        {
            OperationResult result = new OperationResult();

            if (organization.WizardStep != 0 && organizationAttributeDao.MRegProgress == (int)WizardStepType.Completed)
            {
                //如果步骤不是财务设置,并且本位币不为空
                result.Success = false;
                result.Messages.Add("组织已经完成了向导,不能进行向导操作");
            }

            //其他的校验
            if (organization.WizardStep != (int)WizardStepType.FinancialSetup && !string.IsNullOrWhiteSpace(organization.BaseCurrencyId))
            {
                //如果步骤不是财务设置,并且本位币不为空
                result.Success = false;
                result.Messages.Add("当前步骤不在财务设置,不能更改本位币");
            }

            return(result);
        }
        /// <summary>
        /// 设置更新的值
        /// </summary>
        /// <param name="organizationDTO"></param>
        /// <param name="organization"></param>
        private void SetUpdateValue(DetailedOrganizationDTO organization, OrganizationDAO organizationDao, OrganizationAttributeDAO organizationAttribute)
        {
            organizationDao.MName = string.IsNullOrWhiteSpace(organization.DisplayName) ?
                                    organizationDao.MName : organization.DisplayName;

            organizationDao.MLegalTradingName = string.IsNullOrWhiteSpace(organization.LegalTradingName) ?
                                                organizationDao.MLegalTradingName : organization.LegalTradingName;

            organizationAttribute.MBaseCurrencyID = string.IsNullOrWhiteSpace(organization.BaseCurrencyId) ?
                                                    organizationAttribute.MBaseCurrencyID : organization.BaseCurrencyId;
        }