// GET: Courses public async Task <IActionResult> Index(string titleString, string programmeString, int semestarInt = 0) { TempData["test"] = "lala"; IQueryable <Course> courses = _context.Course.AsQueryable(); IQueryable <String> programmes = _context.Course.OrderBy(m => m.Programme) .Select(m => m.Programme).Distinct(); IQueryable <int> semesters = _context.Course.OrderBy(m => m.Semestar) .Select(m => m.Semestar).Distinct(); if (!string.IsNullOrEmpty(titleString)) { courses = courses.Where(s => s.Title.Contains(titleString)); } if (!string.IsNullOrEmpty(programmeString)) { courses = courses.Where(s => s.Programme == programmeString); } if (semestarInt != 0) { courses = courses.Where(s => s.Semestar == semestarInt); } courses = courses.Include(c => c.FirstTeacher).Include(c => c.SecondTeacher); var coursesFilterVM = new CoursesFilterViewModel { Courses = await courses.ToListAsync(), Programmes = new SelectList(await programmes.ToListAsync()), Semestars = new SelectList(await semesters.ToListAsync()) }; return(View(coursesFilterVM)); }
public IActionResult Index(CoursesFilterViewModel filterModel, int page) { CoursesFilterViewModel filter = HttpContext.Session.Get <CoursesFilterViewModel>(filterKey); if (filter != null) { filter.Name = filterModel.Name; filter.Cost = filterModel.Cost; filter.NumberOfhouse = filterModel.NumberOfhouse; filter.TrainingProgramm = filterModel.TrainingProgramm; filter.FromCost = filterModel.FromCost; filter.ToCost = filterModel.ToCost; HttpContext.Session.Remove(filterKey); HttpContext.Session.Set(filterKey, filter); } return(RedirectToAction("Index", new { page })); }
// GET: Courses public async Task <IActionResult> Index(SortState sortState = SortState.CoursesNameAsc, int page = 1) { CoursesFilterViewModel filter = HttpContext.Session.Get <CoursesFilterViewModel>(filterKey); if (filter == null) { filter = new CoursesFilterViewModel { Name = string.Empty, Cost = null, NumberOfhouse = null, TrainingProgramm = string.Empty, FromCost = null, ToCost = null }; HttpContext.Session.Set(filterKey, filter); } string key = $"{typeof(Course).Name}-{page}-{sortState}-{filter.Name}-{filter.Cost}-{filter.NumberOfhouse}-{filter.TrainingProgramm}-{filter.FromCost}-{filter.ToCost}"; if (!_cache.TryGetValue(key, out CourseViewModel model)) { model = new CourseViewModel(); IQueryable <Course> clients = GetSortedCourses(sortState, filter.Name, filter.Cost, filter.NumberOfhouse, filter.TrainingProgramm, filter.FromCost, filter.ToCost); int count = clients.Count(); model.PageViewModel = new PageViewModel(page, count, pageSize); model.Courses = count == 0 ? new List <Course>() : clients.Skip((model.PageViewModel.PageIndex - 1) * pageSize).Take(pageSize).ToList(); model.SortViewModel = new SortViewModel(sortState); model.CoursesFilterViewModel = filter; _cache.Set(key, model); } return(View(model)); }