// GET: Positions
        public async Task <IActionResult> Index(SortState sortState, int page = 1)
        {
            PositionsFilterViewModel filter = HttpContext.Session.Get <PositionsFilterViewModel>(filterKey);

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

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

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

                IQueryable <Position> positions = GetSortedPositions(sortState, filter.Name);

                int count = positions.Count();

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

                model.Positions                = count == 0 ? new List <Position>() : positions.Skip((model.PageViewModel.PageIndex - 1) * pageSize).Take(pageSize).ToList();
                model.SortViewModel            = new SortViewModel(sortState);
                model.PositionsFilterViewModel = filter;

                _cache.Set(key, model);
            }

            return(View(model));
        }
        public IActionResult Index(SortState sortState = SortState.PositionsNameAsc, int page = 1)
        {
            PositionsFilterViewModel filter = HttpContext.Session.Get <PositionsFilterViewModel>(filterKey);

            if (filter == null)
            {
                filter = new PositionsFilterViewModel {
                    PositionName = string.Empty
                };
                HttpContext.Session.Set(filterKey, filter);
            }

            string modelKey = $"{typeof(Position).Name}-{page}-{sortState}-{filter.PositionName}";

            if (!cache.TryGetValue(modelKey, out PositionsViewModel model))
            {
                model = new PositionsViewModel();

                IQueryable <Position> positions = GetSortedEntities(sortState, filter);

                int count    = positions.Count();
                int pageSize = 10;
                model.PageViewModel = new PageViewModel(page, count, pageSize);

                model.Entities                 = count == 0 ? new List <Position>() : positions.Skip((model.PageViewModel.CurrentPage - 1) * pageSize).Take(pageSize).ToList();
                model.SortViewModel            = new SortViewModel(sortState);
                model.PositionsFilterViewModel = filter;

                cache.Set(modelKey, model);
            }

            return(View(model));
        }
Esempio n. 3
0
		public PositionPageViewModel()
		{
			Title = "Должности";
			Filter = new PositionsFilterViewModel();

			OrganisationUIDs = new List<Guid>();
		}
        public IActionResult Index(PositionsFilterViewModel filterModel, int page)
        {
            PositionsFilterViewModel filter = HttpContext.Session.Get <PositionsFilterViewModel>(filterKey);

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

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

            return(RedirectToAction("Index", new { page }));
        }
        private IQueryable <Position> GetSortedEntities(SortState sortState, PositionsFilterViewModel filterModel)
        {
            IQueryable <Position> positions = db.Positions.AsQueryable();

            switch (sortState)
            {
            case SortState.PositionsNameAsc:
                positions = positions.OrderBy(p => p.Name);
                break;

            case SortState.PositionsNameDesc:
                positions = positions.OrderByDescending(p => p.Name);
                break;
            }

            if (!string.IsNullOrEmpty(filterModel.PositionName))
            {
                positions = positions.Where(p => p.Name.Contains(filterModel.PositionName)).AsQueryable();
            }

            return(positions);
        }