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