public SortWorkerViewModel(SortStateWorker sortOrder) { LoginSort = sortOrder == SortStateWorker.LoginAsc ? SortStateWorker.LoginDesc : SortStateWorker.LoginAsc; FamilySort = sortOrder == SortStateWorker.FamilyAsc ? SortStateWorker.FamilyDesc : SortStateWorker.FamilyAsc; NameSort = sortOrder == SortStateWorker.NameAsc ? SortStateWorker.NameDesc : SortStateWorker.NameAsc; OtchSort = sortOrder == SortStateWorker.OtchAsc ? SortStateWorker.OtchDesc : SortStateWorker.OtchAsc; PostSort = sortOrder == SortStateWorker.PostAsc ? SortStateWorker.PostDesc : SortStateWorker.PostAsc; SubunitSort = sortOrder == SortStateWorker.SubunitAsc ? SortStateWorker.SubunitDesc : SortStateWorker.SubunitAsc; SectorSort = sortOrder == SortStateWorker.SectorAsc ? SortStateWorker.SectorDesc : SortStateWorker.SectorAsc; Current = sortOrder; }
public IActionResult Index(string query, int page = 1, SortStateWorker sortOrder = SortStateWorker.LoginAsc) { int pageSize = 10; IQueryable <Worker> workers = db.Workers.Include(x => x.Sector).Include(x => x.Sector.Subunit); if (!String.IsNullOrEmpty(query)) { workers = workers.Where(p => p.UserName.ToUpper().Contains(query.ToUpper()) || p.Family.ToUpper().Contains(query.ToUpper()) || p.Name.ToUpper().Contains(query.ToUpper()) || p.Otch.ToUpper().Contains(query.ToUpper()) || p.Post.ToUpper().Contains(query.ToUpper()) || p.Sector.Subunit.Name.ToUpper().Contains(query.ToUpper()) || p.Sector.SectorName.ToUpper().Contains(query.ToUpper()) ); } workers = sortOrder switch { SortStateWorker.LoginDesc => workers.OrderByDescending(p => p.UserName), SortStateWorker.FamilyAsc => workers.OrderBy(p => p.Family), SortStateWorker.FamilyDesc => workers.OrderByDescending(p => p.Family), SortStateWorker.NameAsc => workers.OrderBy(p => p.Name), SortStateWorker.NameDesc => workers.OrderByDescending(p => p.Name), SortStateWorker.OtchAsc => workers.OrderBy(p => p.Otch), SortStateWorker.OtchDesc => workers.OrderByDescending(p => p.Otch), SortStateWorker.PostAsc => workers.OrderBy(p => p.Post), SortStateWorker.PostDesc => workers.OrderByDescending(p => p.Post), SortStateWorker.SubunitAsc => workers.OrderBy(p => p.Sector.Subunit.Name), SortStateWorker.SubunitDesc => workers.OrderByDescending(p => p.Sector.Subunit.Name), SortStateWorker.SectorAsc => workers.OrderBy(p => p.UserName), SortStateWorker.SectorDesc => workers.OrderByDescending(p => p.UserName), _ => workers.OrderBy(p => p.UserName), }; var count = workers.Count(); var items = workers.Skip((page - 1) * pageSize).Take(pageSize).ToList(); WorkerListViewModel model = new WorkerListViewModel { PageViewModel = new PageViewModel(count, page, pageSize), SortViewModel = new SortWorkerViewModel(sortOrder), FilterViewModel = new FilterWorkerViewModel(query), Workers = items }; return(View(model)); }