// GET: Manufacturers public async Task <IActionResult> Index(string selectedName, int?page, SortViewModel.Sort?sort, int?selectedMinPrice, int?selectedMaxPrice, int?selectedTypeId, int?selectedManufacturerId) { if (!User.IsInRole(Areas.Identity.Roles.User) && !User.IsInRole(Areas.Identity.Roles.Admin)) { return(Redirect("~/Identity/Account/Login")); } bool isFromFilter = HttpContext.Request.Query["isFromFilter"] == "true"; _service.GetSortPagingCookiesForUserIfNull(Request.Cookies, User.Identity.Name, isFromFilter, ref page, ref sort); _service.GetFilterCookiesForUserIfNull(Request.Cookies, User.Identity.Name, isFromFilter, ref selectedName, ref selectedMinPrice, ref selectedMaxPrice, ref selectedTypeId, ref selectedManufacturerId); _service.SetDefaultValuesIfNull(ref selectedName, ref page, ref sort); _service.SetCookies(Response.Cookies, User.Identity.Name, selectedName, page, sort, selectedMinPrice, selectedMaxPrice, selectedTypeId, selectedManufacturerId); var products = _context.Products.Include(p => p.Manufacturer).Include(p => p.ProductType).AsQueryable(); products = _service.Filter(products, selectedName, selectedMinPrice, selectedMaxPrice, selectedTypeId, selectedManufacturerId); var count = await products.CountAsync(); products = _service.Sort(products, (SortViewModel.Sort)sort); products = _service.Paging(products, isFromFilter, (int)page, _pageSize); IndexViewModel model = new IndexViewModel { Products = await products.ToListAsync(), PageViewModel = new Infrastructure.ViewModels.PageViewModel(count, (int)page, _pageSize), FilterViewModel = new FilterViewModel(selectedName, selectedMinPrice, selectedMaxPrice, selectedTypeId, selectedManufacturerId, await _context.ProductTypes.ToListAsync(), await _context.Manufacturers.ToListAsync()), SortViewModel = new SortViewModel((SortViewModel.Sort)sort), }; return(View(model)); }