示例#1
0
        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);
            }));
        }
示例#2
0
        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);
            }
                                                                ));
        }
示例#5
0
        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);
        }