public IActionResult GetProductCards ( string categoryUrl = "", string subcategoryUrl = "", string groupUrl = "", CatalogCountItems count = CatalogCountItems.Small, CatalogSortingType sorting = CatalogSortingType.AscendingTitle, int page = 1, string filters = "", int minPrice = 0, int maxPrice = int.MaxValue, string manufacturer = "", ProductType type = ProductType.Normal ) { if (string.IsNullOrEmpty(categoryUrl)) { return(BadRequest()); } ProductCategory category = catalogRepository.GetCategory(categoryUrl); ProductSubcategory subcategory = catalogRepository.GetSubcategory(subcategoryUrl); ProductGroup group = catalogRepository.GetGroup(groupUrl); int countItems = productsFilterService.GetPageCountByItems(count); List <Product> products = productsFilterService.Filter ( categoryUrl, subcategoryUrl, groupUrl, count, sorting, page, filters, minPrice, maxPrice, manufacturer, type ); List <ProductCard> productCards = products .Select(product => new ProductCard(product)) .ToList(); return(Ok(productCards)); }
public IActionResult Section ( string categoryUrl = "", string subcategoryUrl = "", string groupUrl = "", CatalogCountItems count = CatalogCountItems.Small, CatalogSortingType sorting = CatalogSortingType.AscendingTitle, int page = 1, string filters = "", int minPrice = 0, int maxPrice = int.MaxValue, string manufacturer = "", ProductType type = ProductType.Normal ) { if (string.IsNullOrEmpty(categoryUrl)) { return(NotFound()); } Navigation navigation = commonRepository.GetNavigation(); SeoData seo = commonRepository.GetSeo("catalog"); ProductCategory category = catalogRepository.GetCategory(categoryUrl); ProductSubcategory subcategory = catalogRepository.GetSubcategory(subcategoryUrl); ProductGroup group = catalogRepository.GetGroup(groupUrl); if (category == null) { return(NotFound()); } int countItems = productsFilterService.GetPageCountByItems(count); List <Product> products = productsFilterService.Filter ( categoryUrl, subcategoryUrl, groupUrl, count, sorting, page, filters, minPrice, maxPrice, manufacturer, type ); List <Breadcrumb> breadcrumbs = GetBreadcrumbs(category, subcategory, group); var catalogFilters = new CatalogFilters() { MinPrice = (int)products.Min(x => x.Price), MaxPrice = (int)products.Max(x => x.Price), Manufacturers = products.Any() ? products.Select(x => x.Manufacturer).Distinct(new ManufacturerEqualityComparer()).ToList() : new List <Manufacturer>(), CategoryFilters = new List <CategoryFilter>() { new CategoryFilter("Категория 1", new List <CategoryFilterItem>() { new CategoryFilterItem(1, "Увлажняющие", "cat-1-uvlaj"), new CategoryFilterItem(2, "Питательные", "cat-1-pitatel"), new CategoryFilterItem(3, "Натуральные", "cat-1-natural"), new CategoryFilterItem(4, "Дневные", "cat-1-den"), new CategoryFilterItem(5, "Ночные", "cat-1-noch") }), new CategoryFilter("Категория 2", new List <CategoryFilterItem>() { new CategoryFilterItem(6, "Антивозрастные", "cat-2-antivozrast"), new CategoryFilterItem(7, "Жирные", "cat-2-jirnie"), new CategoryFilterItem(8, "Сухие", "cat-2-suhie"), new CategoryFilterItem(9, "Невероятные", "cat-2-neveroyat"), new CategoryFilterItem(10, "Чудесные", "cat-2-chudo") }) } }; int pageCount = products.Count() / countItems != 0 ? products.Count() / countItems : 1; var pagination = new Pagination(page, pageCount); var sectionPage = new SectionPage(seo, navigation, breadcrumbs, products, products.Count, catalogFilters, pagination); return(View(sectionPage)); }