// GET: Clients public async Task <IActionResult> Index(SortState sortState = SortState.ClientsNameAsc, int page = 1) { ClientsFilterViewModel filter = HttpContext.Session.Get <ClientsFilterViewModel>(filterKey); if (filter == null) { filter = new ClientsFilterViewModel { Name = string.Empty }; HttpContext.Session.Set(filterKey, filter); } string key = $"{typeof(Client).Name}-{page}-{sortState}-{filter.Name}"; if (!_cache.TryGetValue(key, out ClientViewModel model)) { model = new ClientViewModel(); IQueryable <Client> clients = GetSortedClients(sortState, filter.Name); int count = clients.Count(); model.PageViewModel = new PageViewModel(page, count, pageSize); model.Clients = count == 0 ? new List <Client>() : clients.Skip((model.PageViewModel.PageIndex - 1) * pageSize).Take(pageSize).ToList(); model.SortViewModel = new SortViewModel(sortState); model.ClientsFilterViewModel = filter; _cache.Set(key, model); } return(View(model)); }
public IActionResult Index(ClientsFilterViewModel filterModel, int page) { ClientsFilterViewModel filter = HttpContext.Session.Get <ClientsFilterViewModel>(filterKey); if (filter != null) { filter.Name = filterModel.Name; HttpContext.Session.Remove(filterKey); HttpContext.Session.Set(filterKey, filter); } return(RedirectToAction("Index", new { page })); }
private List <Client> Filter(List <Client> collection, ClientsFilterViewModel filterModel) { if (filterModel != null) { if (filterModel.FirstName != null) { collection = collection.Where(x => x.FirstName.Contains(filterModel.FirstName)).ToList(); } if (filterModel.LastName != null) { collection = collection.Where(x => x.LastName.Contains(filterModel.LastName)).ToList(); } } return(collection); }