public IResult UpdateCompany(IUpdateCompanyParameters parameters)
 {
     try
     {
         return(_companyServiceProvider.UpdateCompany(parameters));
     }
     catch (Exception ex)
     {
         _exceptionLogger.LogException(ex);
         return(new FailureResult <string>(null, ex.Message));
     }
 }
        public IResult UpdateCompany(IUpdateCompanyParameters parameters)
        {
            if(parameters == null) { throw new ArgumentNullException("parameters"); }

            var parsedParametersResult = parameters.ToParsedParameters();
            if(!parsedParametersResult.Success)
            {
                return parsedParametersResult.ConvertTo<string>();
            }

            var updateResult = new UpdateCompanyCommand(_companyUnitOfWork).Execute(_timeStamper.CurrentTimeStamp, parsedParametersResult.ResultingObject);
            if(!updateResult.Success)
            {
                return updateResult;
            }

            _companyUnitOfWork.Commit();

            var companyKey = parsedParametersResult.ResultingObject.CompanyKey;
            return SyncParameters.Using(new SuccessResult<string>(companyKey), companyKey);
        }
        internal static IResult <UpdateCompanyCommandParameters> ToParsedParameters(this IUpdateCompanyParameters updateCompanyParameters)
        {
            if (updateCompanyParameters == null)
            {
                throw new ArgumentNullException("updateCompanyParameters");
            }

            var companyKeyResult = KeyParserHelper.ParseResult <ICompanyKey>(updateCompanyParameters.CompanyKey);

            if (!companyKeyResult.Success)
            {
                return(companyKeyResult.ConvertTo((UpdateCompanyCommandParameters)null));
            }
            var companyKey = new CompanyKey(companyKeyResult.ResultingObject);

            if (updateCompanyParameters.CompanyTypes == null || !updateCompanyParameters.CompanyTypes.Any())
            {
                return(new InvalidResult <UpdateCompanyCommandParameters>(null, UserMessages.CompanyTypesRequired));
            }

            CompanyKey brokerKey = null;

            if (!string.IsNullOrEmpty(updateCompanyParameters.BrokerKey))
            {
                var brokerKeyResult = KeyParserHelper.ParseResult <ICompanyKey>(updateCompanyParameters.BrokerKey);
                if (!brokerKeyResult.Success)
                {
                    return(brokerKeyResult.ConvertTo <UpdateCompanyCommandParameters>());
                }
                brokerKey = brokerKeyResult.ResultingObject.ToCompanyKey();
            }

            return(new SuccessResult <UpdateCompanyCommandParameters>(new UpdateCompanyCommandParameters
            {
                Parameters = updateCompanyParameters,
                CompanyKey = companyKey,
                BrokerKey = brokerKey
            }));
        }