public EmployesSortVM(EmployeeSortState sortOrder) { NameSort = sortOrder == EmployeeSortState.NameAsc ? EmployeeSortState.NameDesc : EmployeeSortState.NameAsc; AgeSort = sortOrder == EmployeeSortState.AgeAsc ? EmployeeSortState.AgeDesc : EmployeeSortState.AgeAsc; SurnameSort = sortOrder == EmployeeSortState.SurnameAsc ? EmployeeSortState.SurnameDesc : EmployeeSortState.SurnameAsc; Current = sortOrder; }
public static IQueryable <Employee> Sort(this IQueryable <Employee> employes, EmployeeSortState sortState) { switch (sortState) { case EmployeeSortState.NameAsc: employes = employes.OrderBy(e => e.Name); break; case EmployeeSortState.NameDesc: employes = employes.OrderByDescending(e => e.Name); break; case EmployeeSortState.SurnameAsc: employes = employes.OrderBy(e => e.Surname); break; case EmployeeSortState.SurnameDesc: employes = employes.OrderByDescending(e => e.Surname); break; case EmployeeSortState.AgeAsc: employes = employes.OrderBy(e => e.Age); break; case EmployeeSortState.AgeDesc: employes = employes.OrderByDescending(e => e.Age); break; default: throw new InvalidEnumArgumentException("Unknown enum type"); } return(employes); }
public async Task <IActionResult> List(string name = null, string surname = null, EmployeeSortState sortOrder = EmployeeSortState.NameAsc, int page = 1) { IQueryable <Employee> employes = db.Employes; var employesTotalCount = await employes.CountAsync(); employes = employes.Filter(name, surname); employes = employes.Sort(sortOrder); employes = employes.GetPage(page, PageSize); var viewModel = new EmployesListVM { Employes = await employes.AsNoTracking().ToListAsync(), FilterVM = new EmployesFilterVM(name, surname), SortVM = new EmployesSortVM(sortOrder), PageVM = new PageVM(employesTotalCount, page, PageSize), }; return(View(viewModel)); }