コード例 #1
0
        public GetProductsByCategoryResponse GetProductsByCategory(GetProductsByCategoryRequest request)
        {
            var spec = new ProductDtoIsInCategorySpecification(request.CategoryId)
                       .And(new ProductDtoIsInColourSpecification(request.ColourIds))
                       .And(new ProductDtoIsMadeByBrandSpecification(request.BrandIds))
                       .And(new ProductDtoIsInSizeSpecification(request.SizeIds));

            IEnumerable <ProductDto> matchingProducts = FindAllProducts().Where(spec.IsSatisfiedBy);

            switch (request.SortBy)
            {
            case ProductsSortBy.PriceLowToHigh:
                matchingProducts = matchingProducts.OrderBy(p => p.Price);
                break;

            case ProductsSortBy.PriceHighToLow:
                matchingProducts = matchingProducts.OrderByDescending(p => p.Price);
                break;
            }

            GetProductsByCategoryResponse response = matchingProducts.CreateProductSearchResultFrom(request);

            response.SelectedCategoryName =
                GetAllCategories().Categories.Where(c => c.Id == request.CategoryId).FirstOrDefault().Name;

            return(response);
        }
コード例 #2
0
        private IEnumerable<ProductDto> GetAllProductsMatchingQuery(GetProductsByCategoryRequest request)
        {
            var queryDtoSpec = new ProductDtoIsInCategorySpecification(request.CategoryId)
                    .And(new ProductDtoIsInColourSpecification(request.ColourIds))
                    .And(new ProductDtoIsMadeByBrandSpecification(request.BrandIds))
                    .And(new ProductDtoIsInSizeSpecification(request.SizeIds));

            IEnumerable<ProductDto> productsMatchingRefinement =
                _presentationRepository.FindBySpec<ProductDto>(queryDtoSpec);

            // TODO: Correct Sort By Logic)
            //switch (request.SortBy)
            //{
            //    case ProductsSortBy.PriceLowToHigh:
            //        productsMatchingRefinement = productsMatchingRefinement.OrderBy(p => p.Price);
            //        break;
            //    case ProductsSortBy.PriceHighToLow:
            //        productsMatchingRefinement = productsMatchingRefinement.OrderByDescending(p => p.Price);
            //        break;
            //}

            return productsMatchingRefinement;
        }
コード例 #3
0
        private IEnumerable <ProductDto> GetAllProductsMatchingQuery(GetProductsByCategoryRequest request)
        {
            var queryDtoSpec = new ProductDtoIsInCategorySpecification(request.CategoryId)
                               .And(new ProductDtoIsInColourSpecification(request.ColourIds))
                               .And(new ProductDtoIsMadeByBrandSpecification(request.BrandIds))
                               .And(new ProductDtoIsInSizeSpecification(request.SizeIds));

            IEnumerable <ProductDto> productsMatchingRefinement =
                _presentationRepository.FindBySpec <ProductDto>(queryDtoSpec);


            // TODO: Correct Sort By Logic)
            //switch (request.SortBy)
            //{
            //    case ProductsSortBy.PriceLowToHigh:
            //        productsMatchingRefinement = productsMatchingRefinement.OrderBy(p => p.Price);
            //        break;
            //    case ProductsSortBy.PriceHighToLow:
            //        productsMatchingRefinement = productsMatchingRefinement.OrderByDescending(p => p.Price);
            //        break;
            //}

            return(productsMatchingRefinement);
        }
        public GetProductsByCategoryResponse GetProductsByCategory(GetProductsByCategoryRequest request)
        {
            var spec = new ProductDtoIsInCategorySpecification(request.CategoryId)
                    .And(new ProductDtoIsInColourSpecification(request.ColourIds))
                    .And(new ProductDtoIsMadeByBrandSpecification(request.BrandIds))
                    .And(new ProductDtoIsInSizeSpecification(request.SizeIds));

            IEnumerable<ProductDto> matchingProducts = FindAllProducts().Where(spec.IsSatisfiedBy);

            switch (request.SortBy)
            {
                case ProductsSortBy.PriceLowToHigh:
                    matchingProducts = matchingProducts.OrderBy(p => p.Price);
                    break;
                case ProductsSortBy.PriceHighToLow:
                    matchingProducts = matchingProducts.OrderByDescending(p => p.Price);
                    break;
            }

            GetProductsByCategoryResponse response = matchingProducts.CreateProductSearchResultFrom(request);

            response.SelectedCategoryName =
                GetAllCategories().Categories.Where(c => c.Id == request.CategoryId).FirstOrDefault().Name;

            return response;
        }