コード例 #1
0
        public IEnumerable <ProductViewModel> Do(FilterProductsRequest request)
        {
            if (request.FilterOption == FilterOption.PRICE)
            {
                return(_productRepository.GetProductsByPrice(request.MinPrice.GetValueOrDefault(), request.MaxPrice, ModelMapper));
            }
            if (request.FilterOption == FilterOption.STOCK)
            {
                return(_productRepository.GetProductsByQuantity(0, ModelMapper));
            }
            if (request.FilterOption == FilterOption.RATING)
            {
                IEnumerable <int> products =
                    _ratingRepository.GetProductIdsByTotalRating(request.MinRating.GetValueOrDefault(), request.MaxRating.GetValueOrDefault(),
                                                                 r => r.ProductId);

                return(_productRepository.GetProducts(p => products.Contains(p.Id), ModelMapper));
            }
            if (request.FilterOption == FilterOption.WEIGHT)
            {
                return(_productRepository.GetProducts(p =>
                                                      p.Weight >= request.MinWeight.GetValueOrDefault() && p.Weight <= request.MaxWeight.GetValueOrDefault()
                                                      , ModelMapper));
            }
            if (request.FilterOption == FilterOption.CATEGORY)
            {
                return(_productRepository.GetProducts(p => p.CategoryId == request.CategoryId.GetValueOrDefault(), ModelMapper));
            }
            if (request.FilterOption == FilterOption.PRODUCER)
            {
                return(_productRepository.GetProducts(p => p.ProducerId == request.ProducerId.GetValueOrDefault(),
                                                      ModelMapper));
            }

            return(new List <ProductViewModel>());
        }