Exemple #1
0
        public static Address ToValidateAddressRequest(this VirtoCommerce.Domain.Customer.Model.Address address, string companyCode)
        {
            var retVal = new Address()
            {
                Country    = address.CountryName,
                City       = address.City,
                Line1      = address.Line1,
                Line2      = address.Line2,
                Region     = address.RegionName,
                PostalCode = address.PostalCode
            };

            return(retVal);
        }
Exemple #2
0
        public IHttpActionResult ValidateAddress(VirtoCommerce.Domain.Customer.Model.Address address)
        {
            IHttpActionResult retVal = BadRequest();

            LogInvoker <AvalaraLogger.TaxRequestContext> .Execute(log =>
            {
                if (!_taxSettings.IsValidateAddress)
                {
                    retVal = BadRequest("AvaTax address validation disabled");
                    throw new Exception((retVal as BadRequestErrorMessageResult).Message);
                }

                if (!string.IsNullOrEmpty(_taxSettings.Username) && !string.IsNullOrEmpty(_taxSettings.Password) &&
                    !string.IsNullOrEmpty(_taxSettings.ServiceUrl) &&
                    !string.IsNullOrEmpty(_taxSettings.CompanyCode))
                {
                    var addressSvc = new JsonAddressSvc(_taxSettings.Username, _taxSettings.Password, _taxSettings.ServiceUrl);

                    var request = address.ToValidateAddressRequest(_taxSettings.CompanyCode);

                    var validateAddressResult = addressSvc.Validate(request);
                    if (!validateAddressResult.ResultCode.Equals(SeverityLevel.Success))
                    {
                        var error = string.Join(Environment.NewLine,
                                                validateAddressResult.Messages.Where(ms => ms.Severity == SeverityLevel.Error).Select(
                                                    m => m.Summary + string.Format(" [{0} - {1}] ", m.RefersTo, m.Details == null ? string.Empty : string.Join(", ", m.Details))));
                        retVal = BadRequest(error);
                        throw new Exception((retVal as BadRequestErrorMessageResult).Message);
                    }

                    retVal = Ok(validateAddressResult);
                }

                if (!(retVal is OkNegotiatedContentResult <ValidateResult>))
                {
                    retVal = BadRequest("AvaTax credentials not provided");
                    throw new Exception((retVal as BadRequestErrorMessageResult).Message);
                }
            })
            .OnError(_logger, AvalaraLogger.EventCodes.AddressValidationError)
            .OnSuccess(_logger, AvalaraLogger.EventCodes.ValidateAddress);

            return(retVal);
        }