Esempio n. 1
0
        // 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));
        }