public virtual quoteDto.QuoteRequestSearchCriteria ToQuoteSearchCriteriaDto(QuoteSearchCriteria criteria) { var result = new quoteDto.QuoteRequestSearchCriteria { CustomerId = criteria.CustomerId, Skip = criteria.Start, Take = criteria.PageSize, Sort = criteria.Sort }; return(result); }
public async Task <IQuoteRequestBuilder> GetOrCreateNewTransientQuoteRequestAsync(Store store, CustomerInfo customer, Language language, Currency currency) { var cacheKey = GetQuoteRequestCacheKey(store.Id, customer.Id); _quoteRequest = await _cacheManager.GetAsync(cacheKey, _quoteRequestCacheRegion, async() => { var activeQuoteSearchCriteria = new quoteModel.QuoteRequestSearchCriteria { Tag = "actual", CustomerId = customer.Id, StoreId = store.Id }; var searchResult = await _quoteApi.QuoteModule.SearchAsync(activeQuoteSearchCriteria); var quoteRequest = searchResult.QuoteRequests.Select(x => x.ToQuoteRequest(store.Currencies, language)).FirstOrDefault(); if (quoteRequest == null) { quoteRequest = new QuoteRequest(currency, language) { Currency = currency, CustomerId = customer.Id, Language = language, Status = "New", StoreId = store.Id, Tag = "actual" }; quoteRequest.CustomerName = customer.IsRegisteredUser ? string.Join(" ", customer.FirstName, customer.LastName) : StorefrontConstants.AnonymousUsername; } else { quoteRequest = (await _quoteApi.QuoteModule.GetByIdAsync(quoteRequest.Id)).ToQuoteRequest(store.Currencies, language); } quoteRequest.Customer = customer; return(quoteRequest); }); return(this); }
public async Task <IQuoteRequestBuilder> GetOrCreateNewTransientQuoteRequestAsync(Store store, User user, Language language, Currency currency) { var cacheKey = CacheKey.With(GetType(), store.Id, user.Id); _quoteRequest = await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { var activeQuoteSearchCriteria = new quoteModel.QuoteRequestSearchCriteria { Tag = "actual", CustomerId = user.Id, StoreId = store.Id }; var searchResult = await _quoteApi.SearchAsync(activeQuoteSearchCriteria); var quoteRequest = searchResult.QuoteRequests.Select(x => x.ToQuoteRequest(currency, language)).FirstOrDefault(); if (quoteRequest == null) { quoteRequest = new QuoteRequest(currency, language) { Currency = currency, CustomerId = user.Id, Language = language, Status = "New", StoreId = store.Id, Tag = "actual" }; quoteRequest.CustomerName = user.UserName; } else { quoteRequest = (await _quoteApi.GetByIdAsync(quoteRequest.Id)).ToQuoteRequest(currency, language); } //Add expiration token for concrete quote instance cacheEntry.AddExpirationToken(QuoteCacheRegion.CreateChangeToken(quoteRequest)); quoteRequest.Customer = user; return(quoteRequest); }); return(this); }
protected virtual IMutablePagedList <QuoteRequest> GetCustomerQuotes(CustomerInfo customer) { var workContext = _workContextFactory(); Func <int, int, IEnumerable <SortInfo>, IPagedList <QuoteRequest> > quotesGetter = (pageNumber, pageSize, sortInfos) => { var quoteSearchCriteria = new quoteDto.QuoteRequestSearchCriteria { Take = pageSize, CustomerId = customer.Id, Skip = (pageNumber - 1) * pageSize, StoreId = workContext.CurrentStore.Id }; var cacheKey = "GetCustomerQuotes-" + quoteSearchCriteria.GetHashCode(); var quoteRequestsResponse = _cacheManager.Get(cacheKey, string.Format(_customerQuotesCacheRegionFormat, customer.Id), () => _quoteApi.QuoteModule.Search(quoteSearchCriteria)); return(new StaticPagedList <QuoteRequest>(quoteRequestsResponse.QuoteRequests.Select(x => x.ToQuoteRequest(workContext.AllCurrencies, workContext.CurrentLanguage)), pageNumber, pageSize, quoteRequestsResponse.TotalCount.Value)); }; return(new MutablePagedList <QuoteRequest>(quotesGetter, 1, QuoteSearchCriteria.DefaultPageSize)); }