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); }
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); }