/// <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);
        }
        public ReponseResult Put([FromBody] DetailedOrganizationDTO organization)
        {
            ReponseResult result = new ReponseResult();

            OperationResult operationResult = _business.UpdateOrganization(organization);

            result.Success = operationResult.Success;
            result.Message = operationResult.Message;
            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;
        }
        /// <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="organization"></param>
        /// <returns></returns>
        public OperationResult UpdateOrganization(DetailedOrganizationDTO organization)
        {
            OperationResult result = new OperationResult();

            OrganizationDAO          organizationDao;
            OrganizationAttributeDAO organizationAttributeDao;

            //进行校验
            result = ValidateUpdate(organization, out organizationDao, out organizationAttributeDao);

            if (!result.Success)
            {
                return(result);
            }

            //进行更新复制
            SetUpdateValue(organization, organizationDao, organizationAttributeDao);

            result.Success = _dal.Update(organizationDao, organizationAttributeDao);

            return(result);
        }