/// <summary>
            /// Executes Workflow associated with retrieving list of addresses according to passed zip\postal code.
            /// </summary>
            /// <param name="request">Instance of <see cref="GetAddressRequest"/>.</param>
            /// <returns>Instance of <see cref="GetAddressResponse"/>.</returns>
            private GetAddressResponse GetAddressFromZipCode(GetAddressRequest request)
            {
                var serviceRequest = new GetFromZipPostalCodeServiceRequest(request.CountryRegionId, request.ZipCode)
                {
                    QueryResultSettings = request.QueryResultSettings
                };

                var serviceResponse = this.Context.Execute <GetFromZipPostalCodeServiceResponse>(serviceRequest);

                return(new GetAddressResponse(serviceResponse.Results));
            }
Exemplo n.º 2
0
            /// <summary>
            /// Gets from zip postal code.
            /// </summary>
            /// <param name="request">The request.</param>
            /// <returns>The response..</returns>
            private static GetFromZipPostalCodeServiceResponse GetFromZipPostalCode(GetFromZipPostalCodeServiceRequest request)
            {
                ValidateGetAddressInfoRequests(request);

                string countryRegionId = request.Filters[AddressServiceConstants.CountryRegionId].ToString();

                string zipCode = string.Empty;

                if (request.Filters[AddressServiceConstants.ZipCode] != null)
                {
                    zipCode = request.Filters[AddressServiceConstants.ZipCode].ToString();
                }

                var getZipcodeDataRequest = new GetFromZipPostalCodeDataRequest(countryRegionId, zipCode);

                getZipcodeDataRequest.QueryResultSettings = request.QueryResultSettings;
                var zipcodeDataSet = request.RequestContext.Runtime.Execute <EntityDataServiceResponse <ZipCodeInfo> >(getZipcodeDataRequest, request.RequestContext);

                return(new GetFromZipPostalCodeServiceResponse(zipcodeDataSet.PagedEntityCollection));
            }
Exemplo n.º 3
0
            /// <summary>
            /// Validates the address as well as resolves the state from zip code, if needed.
            /// </summary>
            /// <param name="context">Instance of <see cref="RequestContext"/>.</param>
            /// <param name="addressToValidate">Address to be validated and resolved.</param>
            /// <param name="validationFailures">The list to hold all exceptions.</param>
            private static void ValidateAndResolveAddress(RequestContext context, Address addressToValidate, List <DataValidationFailure> validationFailures)
            {
                if (addressToValidate != null)
                {
                    // Validates the address
                    ValidateAddressDataRequest  validateAddressRequest = new ValidateAddressDataRequest(addressToValidate);
                    ValidateAddressDataResponse response = context.Runtime.Execute <ValidateAddressDataResponse>(validateAddressRequest, context);

                    if (!response.IsAddressValid)
                    {
                        validationFailures.Add(new DataValidationFailure(response.ErrorCode, new Collection <string> {
                            response.InvalidAddressComponentName
                        }, response.ErrorMessage));
                        return;
                    }

                    // If zip code is provided but not the state, resolve the state from zipcode.
                    if (string.IsNullOrWhiteSpace(addressToValidate.State) && !string.IsNullOrWhiteSpace(addressToValidate.ZipCode))
                    {
                        GetFromZipPostalCodeServiceRequest zipPostalCodeRequest = new GetFromZipPostalCodeServiceRequest(addressToValidate.ThreeLetterISORegionName, addressToValidate.ZipCode)
                        {
                            QueryResultSettings = QueryResultSettings.AllRecords
                        };

                        GetFromZipPostalCodeServiceResponse zipPostalCodeResponse
                            = context.Runtime.Execute <GetFromZipPostalCodeServiceResponse>(zipPostalCodeRequest, context);

                        if (zipPostalCodeResponse.Results != null)
                        {
                            ZipCodeInfo zipCodeResult = zipPostalCodeResponse.Results.Results.GetEnumerator().Current;
                            if (zipCodeResult != null)
                            {
                                addressToValidate.State = zipCodeResult.StateId;
                            }
                        }
                    }
                }
            }