/// <summary> /// Initializes a new instance of the <see cref="WarehouseRequest" /> class. /// </summary> /// <param name="WarehouseId">WarehouseId.</param> /// <param name="Name">Name.</param> /// <param name="OriginAddress">OriginAddress.</param> /// <param name="ReturnAddress">ReturnAddress.</param> public WarehouseRequest(string WarehouseId = default(string), string Name = default(string), AddressDTO OriginAddress = default(AddressDTO), AddressDTO ReturnAddress = default(AddressDTO)) { this.WarehouseId = WarehouseId; this.Name = Name; this.OriginAddress = OriginAddress; this.ReturnAddress = ReturnAddress; }
public override async Task <Party> Run(Party arg, CommercePipelineExecutionContext context) { Condition.Requires(arg).IsNotNull($"{Name}: The unresolved party can not be null"); var policy = context.CommerceContext.GetPolicy <ShipEnginePolicy>(); if (policy.AddressValidationMethod == SEM.AddressValidatingShipment.ValidateAddressEnum.NoValidation) { return(await Task.FromResult(arg)); } //May be more conditions to check here. var ava = new SEA.AddressValidationApi(); var newParty = arg; //Convert from Party to ShipEngine AddressDTO var request = new SEM.AddressDTO { AddressLine1 = newParty.Address1, AddressLine2 = String.IsNullOrWhiteSpace(newParty.Address2) ? string.Empty : newParty.Address2, CityLocality = newParty.City, StateProvince = String.IsNullOrWhiteSpace(newParty.State) ? newParty.StateCode : newParty.State, PostalCode = newParty.ZipPostalCode, CountryCode = newParty.CountryCode }; var result = ava.AddressValidationValidateAddresses( new System.Collections.Generic.List <SEM.AddressDTO>() { request }, policy.ApiKey ); if (result != null && result.Count == 0) { return(await Task.FromResult(arg)); } var badAddress = result.Find(m => m.Status == SEM.AddressValidationResponseDTO.StatusEnum.Error); if (badAddress != null) { var errorMessage = " - " + string.Join(", ", from a in badAddress.Messages select a.Message); await context.CommerceContext.AddMessage( context.GetPolicy <KnownResultCodes>().Error, "InvalidClientPolicy", new object[] { errorMessage } ); return(await Task.FromResult(arg)); } if (result.TrueForAll(a => a.Status == SEM.AddressValidationResponseDTO.StatusEnum.Verified)) { if (policy.AddressValidationMethod == SEM.AddressValidatingShipment.ValidateAddressEnum.ValidateAndClean) { var res = result[0].MatchedAddress; //Convert from AddressDTO to Party newParty.Address1 = res.AddressLine1; newParty.Address2 = res.AddressLine2; newParty.City = res.CityLocality; newParty.State = res.StateProvince; newParty.ZipPostalCode = res.PostalCode; newParty.CountryCode = res.CountryCode; } } return(await Task.FromResult(newParty)); }
/// <summary> /// Initializes a new instance of the <see cref="Shipment" /> class. /// </summary> /// <param name="ShipmentId">ShipmentId.</param> /// <param name="CarrierId">CarrierId.</param> /// <param name="ServiceCode">ServiceCode.</param> /// <param name="ExternalShipmentId">ExternalShipmentId.</param> /// <param name="ShipDate">ShipDate.</param> /// <param name="CreatedAt">CreatedAt.</param> /// <param name="ModifiedAt">ModifiedAt.</param> /// <param name="ShipmentStatus">ShipmentStatus.</param> /// <param name="ShipTo">ShipTo.</param> /// <param name="ShipFrom">ShipFrom.</param> /// <param name="WarehouseId">WarehouseId.</param> /// <param name="ReturnTo">ReturnTo.</param> /// <param name="Confirmation">Confirmation.</param> /// <param name="Customs">Customs.</param> /// <param name="AdvancedOptions">AdvancedOptions.</param> /// <param name="InsuranceProvider">InsuranceProvider.</param> /// <param name="Tags">Tags.</param> /// <param name="Packages">Packages.</param> /// <param name="TotalWeight">TotalWeight.</param> public Shipment(string ShipmentId = default(string), string CarrierId = default(string), string ServiceCode = default(string), string ExternalShipmentId = default(string), DateTime?ShipDate = default(DateTime?), DateTime?CreatedAt = default(DateTime?), DateTime?ModifiedAt = default(DateTime?), ShipmentStatusEnum?ShipmentStatus = default(ShipmentStatusEnum?), AddressDTO ShipTo = default(AddressDTO), AddressDTO ShipFrom = default(AddressDTO), string WarehouseId = default(string), AddressDTO ReturnTo = default(AddressDTO), ConfirmationEnum?Confirmation = default(ConfirmationEnum?), InternationalOptions Customs = default(InternationalOptions), Dictionary <string, Object> AdvancedOptions = default(Dictionary <string, Object>), InsuranceProviderEnum?InsuranceProvider = default(InsuranceProviderEnum?), List <TagResponse> Tags = default(List <TagResponse>), List <ShipmentPackage> Packages = default(List <ShipmentPackage>), Weight TotalWeight = default(Weight)) { this.ShipmentId = ShipmentId; this.CarrierId = CarrierId; this.ServiceCode = ServiceCode; this.ExternalShipmentId = ExternalShipmentId; this.ShipDate = ShipDate; this.CreatedAt = CreatedAt; this.ModifiedAt = ModifiedAt; this.ShipmentStatus = ShipmentStatus; this.ShipTo = ShipTo; this.ShipFrom = ShipFrom; this.WarehouseId = WarehouseId; this.ReturnTo = ReturnTo; this.Confirmation = Confirmation; this.Customs = Customs; this.AdvancedOptions = AdvancedOptions; this.InsuranceProvider = InsuranceProvider; this.Tags = Tags; this.Packages = Packages; this.TotalWeight = TotalWeight; }