public virtual async Task <StoreViewModel> GetStoreViewModelAsync(GetStoreByNumberParam param) { if (param == null) { throw new ArgumentNullException(nameof(param)); } if (string.IsNullOrWhiteSpace(param.Scope)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.Scope)), nameof(param)); } if (param.CultureInfo == null) { throw new ArgumentException(GetMessageOfNull(nameof(param.CultureInfo)), nameof(param)); } if (string.IsNullOrWhiteSpace(param.StoreNumber)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.StoreNumber)), nameof(param)); } if (string.IsNullOrWhiteSpace(param.BaseUrl)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.BaseUrl)), nameof(param)); } var overtureStore = await StoreRepository.GetStoreByNumberAsync(param).ConfigureAwait(false); if (overtureStore == null) { return(null); } var createVmParam = new CreateStoreViewModelParam { Store = overtureStore, CultureInfo = param.CultureInfo, BaseUrl = param.BaseUrl, SearchPoint = param.SearchPoint }; var storeViewModel = StoreViewModelFactory.CreateStoreViewModel(createVmParam); storeViewModel.StructuredData = StoreViewModelFactory.CreateStoreStructuredDataViewModel(createVmParam); if (storeViewModel.HasLocation()) { storeViewModel.Context.Add("latitude", storeViewModel.GetLatitude().ToString(CultureInfo.InvariantCulture)); storeViewModel.Context.Add("longitude", storeViewModel.GetLongitude().ToString(CultureInfo.InvariantCulture)); } return(storeViewModel); }
public virtual async Task <Overture.ServiceModel.Customers.Stores.Store> GetStoreByNumberAsync(GetStoreByNumberParam param) { if (string.IsNullOrWhiteSpace(param.Scope)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.Scope)), nameof(param)); } if (string.IsNullOrWhiteSpace(param.StoreNumber)) { throw new ArgumentException(GetMessageOfNullWhiteSpace(nameof(param.StoreNumber)), nameof(param)); } var cacheKey = new CacheKey(CacheConfigurationCategoryNames.Store) { Scope = param.Scope }; cacheKey.AppendKeyParts(GETSTOREBYNUMBER_CACHE_KEYPART, param.StoreNumber); var request = new GetStoreByNumberRequest() { ScopeId = param.Scope, Number = param.StoreNumber, IncludeAddresses = param.IncludeAddresses, IncludeSchedules = param.IncludeSchedules }; return(await CacheProvider.GetOrAddAsync(cacheKey, () => OvertureClient.SendAsync(request)).ConfigureAwait(false)); }