Example #1
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);
            }
        }