/// <summary>
            /// Validates the address.
            /// </summary>
            /// <param name="shippingRequest">The shipping request.</param>
            /// <returns>The response.</returns>
            /// <remarks>Throws an exception if the address field in the request is null.</remarks>
            private static ValidateShippingAddressServiceResponse ValidateShippingAddress(ValidateShippingAddressServiceRequest shippingRequest)
            {
                if (shippingRequest.AddressToValidate == null)
                {
                    throw new ArgumentNullException("shippingRequest", "shippingRequest.AddressToValidate");
                }

                if (shippingRequest.DeliveryModeId == null)
                {
                    throw new ArgumentNullException("shippingRequest", "shippingRequest.DeliveryModeId");
                }

                var dataServiceRequest  = new GetShippingAdapterConfigurationDataRequest(new[] { shippingRequest.DeliveryModeId }, QueryResultSettings.AllRecords);
                var dataServiceResponse = shippingRequest.RequestContext.Execute <EntityDataServiceResponse <ShippingAdapterConfig> >(dataServiceRequest);

                var shippingAdapterConfigLines = dataServiceResponse.PagedEntityCollection.Results;

                ParameterSet adapterConfig = ExtractAdapterConfigForSpecificDeliveryMode(shippingRequest.DeliveryModeId, shippingAdapterConfigLines);

                var             carrierServiceRequest = new ValidateShippingAddressCarrierServiceRequest(adapterConfig, shippingRequest.AddressToValidate, shippingRequest.SuggestAddress);
                IRequestHandler carrierAdapterHandler = GetCarrierAdapterService(shippingRequest.RequestContext, carrierServiceRequest.GetType(), adapterConfig);

                bool isAddressValid = true;
                IEnumerable <Address> addressSuggestions = null;

                if (carrierAdapterHandler != null)
                {
                    // Call the adapter's validation method
                    var carrierServiceResponse = shippingRequest.RequestContext.Runtime.Execute <ValidateShippingAddressCarrierServiceResponse>(carrierServiceRequest, shippingRequest.RequestContext, carrierAdapterHandler);
                    isAddressValid     = carrierServiceResponse.IsAddressValid;
                    addressSuggestions = carrierServiceResponse.RecommendedAddresses;
                }
                else
                {
                    NetTracer.Warning("No registered shipping carrier is found.");
                }

                return(new ValidateShippingAddressServiceResponse(isAddressValid, addressSuggestions));
            }
Beispiel #2
0
            private static ValidateShippingAddressCarrierServiceResponse ValidateShippingAddress(ValidateShippingAddressCarrierServiceRequest request)
            {
                // Implement the webservice to call to validate the address.
                bool isValid = true;

                return(new ValidateShippingAddressCarrierServiceResponse(isValid, new Collection <Address>()));
            }