// 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)); }
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); }