Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        public FetchOrdersResponse GetProducts(FetchProductRequest fetchProductRequest)
        {
            var fetchProductResponse = _catalogueService.FetchProducts(fetchProductRequest);

            return(fetchProductResponse);
        }
        public FetchProductResponse FetchProduct(FetchProductRequest fetchproductRequest)
        {
            var product = catalogueService.FetchProducts(fetchproductRequest);

            return(product);
        }
Example #5
0
        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);
        }