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); }
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; }
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; }