public SortWorkersViewModel(WorkersSortState sortOrder) { SurnameAscSort = sortOrder == WorkersSortState.SurnameAsc ? WorkersSortState.SurnameDesc : WorkersSortState.SurnameAsc; FirstnameAscSort = sortOrder == WorkersSortState.FirstnameAsc ? WorkersSortState.FirstnsmeDesc : WorkersSortState.FirstnameAsc; AdressAscSort = sortOrder == WorkersSortState.AdresslAsc ? WorkersSortState.AdresslDesc : WorkersSortState.AdresslAsc; BirthdayAscSort = sortOrder == WorkersSortState.BirthdayAsc ? WorkersSortState.BirthdayDesc : WorkersSortState.BirthdayAsc; Current = sortOrder; }
public async Task <ActionResult <IEnumerable <Worker> > > GetSortedWorkers(bool isAsc = true, WorkersSortState sortState = WorkersSortState.LastName) { var workers = _context.Workers .Include(w => w.Department) .Include(w => w.Position) .ToList(); switch (sortState) { case WorkersSortState.LastName: workers = isAsc ? workers.OrderBy(c => c.LastName).ToList() : workers.OrderByDescending(c => c.LastName).ToList(); break; case WorkersSortState.FirstName: workers = isAsc ? workers.OrderBy(c => c.FirstName).ToList() : workers.OrderByDescending(c => c.FirstName).ToList(); break; case WorkersSortState.Department: workers = isAsc ? workers.OrderBy(c => c.Department.Name).ToList() : workers.OrderByDescending(c => c.Department.Name).ToList(); break; case WorkersSortState.Position: workers = isAsc ? workers.OrderBy(c => c.Position.Name).ToList() : workers.OrderByDescending(c => c.Position.Name).ToList(); break; } return(workers); }
// GET: Materials public IActionResult Index(string surname, string firstname, string adress, string birthday, int page = 1, WorkersSortState sortOrder = WorkersSortState.SurnameAsc) { int pageSize = 10; IQueryable <Workers> source = _context.Workers; if (surname != null) { source = source.Where(x => x.Surname.Contains(surname)); } if (firstname != null) { source = source.Where(x => x.Firstname.Contains(firstname)); } if (adress != null) { source = source.Where(x => x.Adress.Contains(adress)); } if (birthday != null) { source = source.Where(x => x.Birthday == DateTime.Parse(birthday)); } switch (sortOrder) { case WorkersSortState.SurnameAsc: source = source.OrderBy(x => x.Surname); break; case WorkersSortState.SurnameDesc: source = source.OrderByDescending(x => x.Surname); break; case WorkersSortState.FirstnameAsc: source = source.OrderBy(x => x.Firstname); break; case WorkersSortState.FirstnsmeDesc: source = source.OrderByDescending(x => x.Firstname); break; case WorkersSortState.AdresslAsc: source = source.OrderBy(x => x.Adress); break; case WorkersSortState.AdresslDesc: source = source.OrderByDescending(x => x.Adress); break; case WorkersSortState.BirthdayAsc: source = source.OrderBy(x => x.Birthday); break; case WorkersSortState.BirthdayDesc: source = source.OrderByDescending(x => x.Birthday); break; default: source = source.OrderBy(x => x.Surname); break; } var count = source.Count(); var items = source.Skip((page - 1) * pageSize).Take(pageSize); PageViewModel pageView = new PageViewModel(count, page, pageSize); WorkersViewModel ivm = new WorkersViewModel { PageViewModel = pageView, SortViewModel = new SortWorkersViewModel(sortOrder), FilterViewModel = new FilterWorkersViewModel(surname, firstname, adress, birthday), Workers = items }; return(View(ivm)); }