public IActionResult Index(SortState sortState = SortState.TypeOfGsmAsc, int page = 1) { CostsFilterViewModel filter = HttpContext.Session.Get <CostsFilterViewModel>(filterKey); if (filter == null) { filter = new CostsFilterViewModel { PricePerLiter = 0, DateOfCostGsm = default }; HttpContext.Session.Set(filterKey, filter); } string modelKey = $"{typeof(Costs).Name}-{page}-{sortState}-{filter.PricePerLiter}-{filter.DateOfCostGsm}"; if (!cache.TryGetValue(modelKey, out CostsViewModel model)) { model = new CostsViewModel(); IQueryable <Costs> costs = GetSortedEntities(sortState, filter.PricePerLiter, filter.DateOfCostGsm); int count = costs.Count(); int pageSize = 10; model.PageViewModel = new PageViewModel(count, page, pageSize); model.Costs = count == 0 ? new List <Costs>() : costs.Skip((model.PageViewModel.PageNumber - 1) * pageSize).Take(pageSize).ToList(); model.SortViewModel = new SortViewModel(sortState); model.CostsFilterViewModel = filter; cache.Set(modelKey, model); } return(View(model)); }
public IActionResult Index(CostsFilterViewModel filterModel, int page) { CostsFilterViewModel filter = HttpContext.Session.Get <CostsFilterViewModel>(filterKey); if (filter != null) { filter.PricePerLiter = filterModel.PricePerLiter; filter.DateOfCostGsm = filterModel.DateOfCostGsm; HttpContext.Session.Remove(filterKey); HttpContext.Session.Set(filterKey, filter); } return(RedirectToAction("Index", new { page })); }