Exemple #1
0
        public IActionResult Index(GroupsFilterViewModel filterModel, int page)
        {
            GroupsFilterViewModel filter = HttpContext.Session.Get <GroupsFilterViewModel>(filterKey);

            if (filter != null)
            {
                filter.Name  = filterModel.Name;
                filter.Year  = filterModel.Year;
                filter.Count = filterModel.Count;

                HttpContext.Session.Remove(filterKey);
                HttpContext.Session.Set(filterKey, filter);
            }

            return(RedirectToAction("Index", new { page }));
        }
Exemple #2
0
        // GET: Groups
        public async Task <IActionResult> Index(SortState sortState, int page = 1)
        {
            GroupsFilterViewModel filter = HttpContext.Session.Get <GroupsFilterViewModel>(filterKey);

            if (filter == null)
            {
                filter = new GroupsFilterViewModel
                {
                    Name  = string.Empty,
                    Year  = null,
                    Count = null
                };
                HttpContext.Session.Set(filterKey, filter);
            }

            string key = $"{typeof(Group).Name}-{page}-{sortState}-{filter.Name}-{filter.Year}-{filter.Count}";

            if (!_cache.TryGetValue(key, out GroupsViewModel model))
            {
                model = new GroupsViewModel();

                IQueryable <Group> groups = GetSortedGroups(sortState, filter.Name, filter.Year, filter.Count);

                int count = groups.Count();

                model.PageViewModel = new PageViewModel(page, count, pageSize);

                model.Groups                = count == 0 ? new List <Group>() : groups.Skip((model.PageViewModel.PageIndex - 1) * pageSize).Take(pageSize).ToList();
                model.SortViewModel         = new SortViewModel(sortState);
                model.GroupsFilterViewModel = filter;

                _cache.Set(key, model);
            }

            return(View(model));
        }