public async Task <IPagedList <CustomerReview> > SearchReviewsAsync(CustomerReviewSearchCriteria criteria) { var cacheKey = CacheKey.With(GetType(), nameof(SearchReviewsAsync), criteria.GetCacheKey()); return(await _memoryCache.GetOrCreateExclusiveAsync( cacheKey, async cacheEntry => { var reviewsChangeToken = CustomerReviewCacheRegion.CreateChangeToken(); cacheEntry.AddExpirationToken(reviewsChangeToken); var apiChangeToken = _apiChangesWatcher.CreateChangeToken(); cacheEntry.AddExpirationToken(apiChangeToken); var searchCriteriaDto = criteria.ToApiSearchCriteria(); var foundCustomerReviews = await _customerReviewsApi.SearchCustomerReviewsAsync(searchCriteriaDto); var totalCount = foundCustomerReviews.TotalCount ?? 0; var customerReviews = foundCustomerReviews.Results.Select(customerReview => customerReview.ToCustomerReview()); return new StaticPagedList <CustomerReview>( customerReviews, criteria.PageNumber, criteria.PageSize, totalCount); })); }
public async Task <IPagedList <Model.CustomerReviews.CustomerReview> > GetCustomerReviewsAsync(CustomerReviewSearchCriteria criteria) { var workContext = _workContextAccessor.WorkContext; var cacheKey = CacheKey.With(GetType(), nameof(GetCustomerReviewsAsync), criteria.GetCacheKey(), workContext.CurrentLanguage.CultureName); return(await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { cacheEntry.AddExpirationToken(CustomerReviewCacheRegion.CreateChangeToken()); cacheEntry.AddExpirationToken(_apiChangesWatcher.CreateChangeToken()); var result = await _customerReviewsApi.SearchCustomerReviewsAsync(criteria.ToSearchCriteriaDto()); return new StaticPagedList <Model.CustomerReviews.CustomerReview>(result.Results.Select(x => x.ToCustomerReview()), criteria.PageNumber, criteria.PageSize, result.TotalCount.Value); })); }
public async Task <double?> GetProductRatingAsync(string productId) { double?result = null; var cacheKey = CacheKey.With(GetType(), nameof(GetProductRatingAsync), productId); result = await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { cacheEntry.ExpirationTokens.Add(CustomerReviewCacheRegion.CreateChangeToken(productId)); cacheEntry.ExpirationTokens.Add(_apiChangesWatcher.CreateChangeToken()); return(await _customerReviews.ProductRatingAsync(productId)); }); return(result); }
public async Task <IPagedList <CutomerReviewModel> > SearchReviewAsync(CustomerReviewSearchCriteria criteria) { var cacheKey = CacheKey.With(GetType(), nameof(SearchReviewAsync), criteria.GetCacheKey()); return(await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { cacheEntry.ExpirationTokens.Add(CustomerReviewCacheRegion.CreateChangeToken(criteria.ProductIds.FirstOrDefault())); cacheEntry.ExpirationTokens.Add(_apiChangesWatcher.CreateChangeToken()); var result = await _customerReviews.SearchCustomerReviewsAsync(criteria.ToSearchCriteriaDto()); return new StaticPagedList <CutomerReviewModel>(result.Results.Select(c => c.ToCustomerReview()), criteria.PageNumber, criteria.PageSize, result.TotalCount.Value); } )); }
public async Task <ProductRating> GetProductRatingAsync(string productId) { var workContext = _workContextAccessor.WorkContext; var cacheKey = CacheKey.With(GetType(), nameof(GetProductRatingAsync), productId, workContext.CurrentLanguage.CultureName); return(await _memoryCache.GetOrCreateExclusiveAsync(cacheKey, async (cacheEntry) => { cacheEntry.AddExpirationToken(CustomerReviewCacheRegion.CreateChangeToken()); cacheEntry.AddExpirationToken(_apiChangesWatcher.CreateChangeToken()); var result = await _customerReviewsApi.GetProductRatingAsync(productId); return new ProductRating() { ProductId = productId, Rating = (decimal?)result.RatingValue, }; })); }
public async Task AddReviewAsync(string authorNickname, ReviewRequest request) { var newReview = new List <AutoRestClients.CustomerReviewsModule.WebModuleApi.Models.CustomerReview> { new AutoRestClients.CustomerReviewsModule.WebModuleApi.Models.CustomerReview { AuthorNickname = authorNickname, Content = request.Content, CreatedBy = authorNickname, CreatedDate = request.CreatedDate, IsActive = true, ModifiedBy = authorNickname, ModifiedDate = SystemTime.Now, ProductId = request.ProductId, Rating = request.Rating } }; await _customerReviewsApi.UpdateAsync(newReview); CustomerReviewCacheRegion.ExpireRegion(); }
public async Task AddReviewAsync(IList <Model.CustomerReviews.CustomerReview> review) { await _customerReviewsApi.UpdateAsync(review.Select(x => x.FromDto()).ToList()); CustomerReviewCacheRegion.ExpireRegion(); }
public async Task AddCustomerReviewAsync(CutomerReviewModel review) { await _customerReviews.UpdateAsync(new CustomerReviewDto[] { CustomerReviewConverter.ToCustomerReviewDto(review) }); CustomerReviewCacheRegion.ExpireReview(review.ProductId); }