public ActionResult <FetchProductResponse> GetProducts(string categorySlug, string brandSlug, int page, int productsPerPage) { var fetchProductsRequest = new FetchProductRequest { PageNumber = page, ProductsPerPage = productsPerPage, CategorySlug = categorySlug, BrandSlug = brandSlug }; var fetchProductsResponse = productService.FetchProduct(fetchProductsRequest); return(fetchProductsResponse); }
public FetchOrdersResponse FetchProducts(FetchProductRequest fetchProductRequest) { IEnumerable <Product> products = new List <Product>(); int prouductCount = 0; //The user is not filetering neither category (not selected) nor brand (not selected) if (fetchProductRequest.CategorySlug == "all-categories" && fetchProductRequest.BrandSlug == "all-brands") { prouductCount = _productRepository.GetAllProducts().Count(); products = _productRepository.GetAllProducts() .Where(product => product.ProductStatus == ProductStatus.Active) // the products that are active .Skip((fetchProductRequest.PageNumber - 1) * fetchProductRequest.ProductPerPage) // if you are on page 3 skip page 2 and 1 .Take(fetchProductRequest.ProductPerPage); // then take only proucts starting from page 3 to add to the products } //The user is using filetering both category (selected) and brand (selected) if (fetchProductRequest.CategorySlug != "all-categories" && fetchProductRequest.BrandSlug != "all-brands") { var filteredProducts = _productRepository.GetAllProducts() .Where(products => products.ProductStatus == ProductStatus.Active && products.Category.Slug == fetchProductRequest.CategorySlug && products.Brand.Slug == fetchProductRequest.BrandSlug); prouductCount = filteredProducts.Count(); products = filteredProducts.Skip((fetchProductRequest.PageNumber - 1) * fetchProductRequest.ProductPerPage) .Take(fetchProductRequest.ProductPerPage); } //The user is using filetering only using category (selected) and not brand (not selected) if (fetchProductRequest.CategorySlug != "all-categories" && fetchProductRequest.BrandSlug == "all-brands") { var filteredProducts = _productRepository.GetAllProducts() .Where(products => products.ProductStatus == ProductStatus.Active && products.Category.Slug == fetchProductRequest.CategorySlug); prouductCount = filteredProducts.Count(); products = filteredProducts.Skip((fetchProductRequest.PageNumber - 1) * fetchProductRequest.ProductPerPage) .Take(fetchProductRequest.ProductPerPage); } //The user is using filetering only using brand (selected) and not category (not selected) if (fetchProductRequest.CategorySlug == "all-categories" && fetchProductRequest.BrandSlug != "all-brands") { var filteredProducts = _productRepository.GetAllProducts() .Where(products => products.ProductStatus == ProductStatus.Active && products.Brand.Slug == fetchProductRequest.BrandSlug); prouductCount = filteredProducts.Count(); products = filteredProducts.Skip((fetchProductRequest.PageNumber - 1) * fetchProductRequest.ProductPerPage) .Take(fetchProductRequest.ProductPerPage); } var totalPages = (int)Math.Ceiling((decimal)prouductCount / fetchProductRequest.ProductPerPage); int[] pages = Enumerable.Range(1, totalPages).ToArray(); var productDtos = _messageMapper.MapToProductDtos(products); var fetchProductResponse = new FetchOrdersResponse() { ProductPerPage = fetchProductRequest.ProductPerPage, Products = productDtos, HasNextPages = (fetchProductRequest.PageNumber < totalPages), HasPreviousPages = (fetchProductRequest.PageNumber > 1), CurrentPage = fetchProductRequest.PageNumber, Pages = pages }; return(fetchProductResponse); }
public FetchOrdersResponse GetProducts(FetchProductRequest fetchProductRequest) { var fetchProductResponse = _catalogueService.FetchProducts(fetchProductRequest); return(fetchProductResponse); }
public FetchProductResponse FetchProduct(FetchProductRequest fetchproductRequest) { var product = catalogueService.FetchProducts(fetchproductRequest); return(product); }
public FetchProductResponse FetchProducts(FetchProductRequest fetchProductsRequest) { IEnumerable <Product> products = new List <Product>(); int productCount = 0; if (fetchProductsRequest.CategorySlug == "all-categories" && fetchProductsRequest.BrandSlug == "all-brands") { productCount = productRepository.GetAllProducts().Count(); products = productRepository.GetAllProducts() .Where(product => product.ProductStatus == ProductStatus.Active) .Skip((fetchProductsRequest.PageNumber - 1) * fetchProductsRequest.ProductsPerPage) .Take(fetchProductsRequest.ProductsPerPage); } if (fetchProductsRequest.CategorySlug != "all-categories" && fetchProductsRequest.BrandSlug != "all-brands") { var filteredProducts = productRepository.GetAllProducts() .Where(product => product.ProductStatus == ProductStatus.Active && product.Category.Slug == fetchProductsRequest.CategorySlug && product.Brand.Slug == fetchProductsRequest.BrandSlug); productCount = filteredProducts.Count(); products = filteredProducts.Skip((fetchProductsRequest.PageNumber - 1) * fetchProductsRequest.ProductsPerPage) .Take(fetchProductsRequest.ProductsPerPage); } if (fetchProductsRequest.CategorySlug != "all-categories" && fetchProductsRequest.BrandSlug == "all-brands") { var filteredProducts = productRepository.GetAllProducts() .Where(product => product.ProductStatus == ProductStatus.Active && product.Category.Slug == fetchProductsRequest.CategorySlug); productCount = filteredProducts.Count(); products = filteredProducts.Skip((fetchProductsRequest.PageNumber - 1) * fetchProductsRequest.ProductsPerPage) .Take(fetchProductsRequest.ProductsPerPage); } if (fetchProductsRequest.CategorySlug == "all-categories" && fetchProductsRequest.BrandSlug != "all-brands") { var filteredProducts = productRepository.GetAllProducts() .Where(product => product.ProductStatus == ProductStatus.Active && product.Brand.Slug == fetchProductsRequest.BrandSlug); productCount = filteredProducts.Count(); products = filteredProducts.Skip((fetchProductsRequest.PageNumber - 1) * fetchProductsRequest.ProductsPerPage) .Take(fetchProductsRequest.ProductsPerPage); } var totalPages = (int)Math.Ceiling((decimal)productCount / fetchProductsRequest.ProductsPerPage); int[] pages = Enumerable.Range(1, totalPages).ToArray(); var productDtos = messageMapper.MapToProductDtos(products); var fetchProductsResponse = new FetchProductResponse() { ProductsPerPage = fetchProductsRequest.ProductsPerPage, Products = productDtos, HasPreviousPages = (fetchProductsRequest.PageNumber > 1), CurrentPage = fetchProductsRequest.PageNumber, HasNextPages = (fetchProductsRequest.PageNumber < totalPages), Pages = pages }; return(fetchProductsResponse); }