Exemple #1
0
 /// <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;
 }
Exemple #2
0
        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;
 }