protected virtual Task LoadProductCustomerReviewsAsync(List <Product> products, WorkContext workContext)
        {
            if (products == null)
            {
                throw new ArgumentNullException(nameof(products));
            }

            foreach (var product in products)
            {
                //Lazy loading for customer reviews
                product.CustomerReviews = new MutablePagedList <Model.CustomerReviews.CustomerReview>((pageNumber, pageSize, sortInfos) =>
                {
                    var criteria = new CustomerReviewSearchCriteria
                    {
                        ProductIds = new[] { product.Id },
                        PageNumber = pageNumber,
                        PageSize   = pageSize,
                        Sort       = SortInfo.ToString(sortInfos),
                    };
                    var reviews = _customerReviewService.SearchReviews(criteria);

                    foreach (var review in reviews)
                    {
                        review.ReviewRatings = new MutablePagedList <Model.ReviewRatings.ReviewRating>((pn, ps, si) =>
                        {
                            return(_customerReviewService.GetReviewRatings(review.Id));
                        }, 1, CustomerReviewSearchCriteria.DefaultPageSize);
                    }

                    return(reviews);
                }, 1, CustomerReviewSearchCriteria.DefaultPageSize);
            }
            return(Task.CompletedTask);
        }
示例#2
0
        protected virtual Task LoadProductCustomerReviewsAsync(Product[] products)
        {
            if (products == null)
            {
                throw new ArgumentNullException(nameof(products));
            }

            foreach (var product in products)
            {
                // Lazy loading for customer reviews
                product.CustomerReviews = new MutablePagedList <Model.CustomerReviews.CustomerReview>(
                    (pageNumber, pageSize, sortInfos) =>
                {
                    var criteria = new CustomerReviewSearchCriteria
                    {
                        ProductIds = new[] { product.Id },
                        PageNumber = pageNumber,
                        PageSize   = pageSize,
                        Sort       = SortInfo.ToString(sortInfos)
                    };
                    return(_customerReviewService.SearchReviews(criteria));
                },
                    1,
                    CustomerReviewSearchCriteria.DefaultPageSize);
            }

            return(Task.CompletedTask);
        }
示例#3
0
        private async Task LoadProductCustomerReviewsAsync(List <Product> products)
        {
            if (products == null)
            {
                throw new ArgumentNullException(nameof(products));
            }

            foreach (var product in products)
            {
                //Lazy loading for customer reviews
                product.CustomerReviews = new MutablePagedList <Model.CustomerReviews.CustomerReview>((pageNumber, pageSize, sortInfos) =>
                {
                    var criteria = new CustomerReviewSearchCriteria
                    {
                        ProductIds = new[] { product.Id },
                        PageNumber = pageNumber,
                        PageSize   = pageSize,
                        Sort       = SortInfo.ToString(sortInfos),
                    };
                    return(_customerReviewService.SearchReviews(criteria));
                }, 1, CustomerReviewSearchCriteria.DefaultPageSize);
                product.AverageRating = await _customerReviewService.GetAverageRatingAsync(product.Id);
            }
        }