private EntityDataServiceResponse <SupportedLanguage> GetLanguages(GetSupportedLanguagesDataRequest request) { AddressDataManager addressDataManager = this.GetDataManagerInstance(request.RequestContext); PagedResult <SupportedLanguage> languages = addressDataManager.GetLanguages(request.QueryResultSettings); return(new EntityDataServiceResponse <SupportedLanguage>(languages)); }
/// <summary> /// Gets the county/region information for the given locale/languageId. /// </summary> /// <param name="request">The request.</param> /// <returns>The response.</returns> private static GetCountryRegionsServiceResponse GetCountryRegions(GetCountryRegionsServiceRequest request) { string languageId = (string)request.Filters[AddressServiceConstants.LanguageIdSqlParameter]; if (!string.IsNullOrWhiteSpace(languageId)) { // Do not specify the query settings as country request query setting does not apply for languages. GetSupportedLanguagesDataRequest getLanguagesDataRequest = new GetSupportedLanguagesDataRequest(); var languages = request.RequestContext.Execute <EntityDataServiceResponse <SupportedLanguage> >(getLanguagesDataRequest).PagedEntityCollection.Results; var languageIds = new HashSet <string>(languages.Select(l => l.LanguageId).ToList()); if (!languageIds.Contains(languageId, StringComparer.OrdinalIgnoreCase)) { throw new DataValidationException( DataValidationErrors.Microsoft_Dynamics_Commerce_Runtime_UnsupportedLanguage, string.Format("Unsupported Language Id specified {0}", languageId)); } } var countryRequest = new GetCountryRegionDataRequest(languageId) { QueryResultSettings = request.QueryResultSettings }; GetCountryRegionDataResponse countryDataSets = request.RequestContext.Execute <GetCountryRegionDataResponse>(countryRequest); ReadOnlyCollection <CountryRegionInfo> results = countryDataSets.CountryRegionInfo.Results; if (results.Any()) { var addressFormattingResults = countryDataSets.AddressFormattingInfo; if (addressFormattingResults != null) { // Construct the lists of addressFormattingInfo per country var addressFormattingDictionary = new Dictionary <string, IList <AddressFormattingInfo> >(); foreach (var addressFormattingInfo in addressFormattingResults) { if (!addressFormattingDictionary.ContainsKey(addressFormattingInfo.CountryRegionId)) { addressFormattingDictionary[addressFormattingInfo.CountryRegionId] = new List <AddressFormattingInfo>(); } addressFormattingDictionary[addressFormattingInfo.CountryRegionId].Add(addressFormattingInfo); } // Now populate the address formatting info to the countries. foreach (CountryRegionInfo country in results) { if (addressFormattingDictionary.ContainsKey(country.CountryRegionId)) { country.AddressFormatLines = addressFormattingDictionary[country.CountryRegionId]; } } } } else { // If not country is found, that is certainly a data syncronization issue. NetTracer.Warning("No country information could be found. Ensure you run job A/N-1010 properly."); } return(new GetCountryRegionsServiceResponse(countryDataSets.CountryRegionInfo)); }