// GET: Teachers public async Task <IActionResult> Index(string firstNameString, string lastNameString, string degreeString, string academicRankString) { IQueryable <Teacher> teachers = _context.Teacher.AsQueryable(); IQueryable <String> degrees = _context.Teacher.OrderBy(m => m.Degree).Select(m => m.Degree).Distinct(); IQueryable <String> academicRanks = _context.Teacher.OrderBy(m => m.AcademicRank).Select(m => m.AcademicRank).Distinct(); if (!string.IsNullOrEmpty(firstNameString)) { teachers = teachers.Where(t => t.FirstName == firstNameString); } if (!string.IsNullOrEmpty(lastNameString)) { teachers = teachers.Where(t => t.LastName == lastNameString); } if (!string.IsNullOrEmpty(degreeString)) { teachers = teachers.Where(t => t.Degree == degreeString); } if (!string.IsNullOrEmpty(academicRankString)) { teachers = teachers.Where(t => t.AcademicRank == academicRankString); } var teachersFilterVM = new TeachersFilterViewModel { Teachers = await teachers.ToListAsync(), Degrees = new SelectList(await degrees.ToListAsync()), AcademicRanks = new SelectList(await academicRanks.ToListAsync()) }; return(View(teachersFilterVM)); }
public IActionResult Index(TeachersFilterViewModel filterModel, int page) { TeachersFilterViewModel filter = HttpContext.Session.Get <TeachersFilterViewModel>(filterKey); if (filter != null) { filter.Name = filterModel.Name; filter.Position = filterModel.Position; filter.Education = filterModel.Education; HttpContext.Session.Remove(filterKey); HttpContext.Session.Set(filterKey, filter); } return(RedirectToAction("Index", new { page })); }
// GET: Teachers public async Task <IActionResult> Index(SortState sortState = SortState.TeachersSurNameAsc, int page = 1) { TeachersFilterViewModel filter = HttpContext.Session.Get <TeachersFilterViewModel>(filterKey); if (filter == null) { filter = new TeachersFilterViewModel { Name = string.Empty, Position = string.Empty, Education = string.Empty, }; HttpContext.Session.Set(filterKey, filter); } string key = $"{typeof(Teacher).Name}-{page}-{sortState}-{filter.Name}-{filter.Position}-{filter.Education}"; if (!_cache.TryGetValue(key, out TeacherViewModel model)) { model = new TeacherViewModel(); IQueryable <Teacher> teachers = GetSortedTeachers(sortState, filter.Name, filter.Position, filter.Education); int count = teachers.Count(); model.PageViewModel = new PageViewModel(page, count, pageSize); model.Teachers = count == 0 ? new List <Teacher>() : teachers.Skip((model.PageViewModel.PageIndex - 1) * pageSize).Take(pageSize).ToList(); model.SortViewModel = new SortViewModel(sortState); model.TeachersFilterViewModel = filter; _cache.Set(key, model); } return(View(model)); }