private IQueryable <Employee> EmployeesSort(IQueryable <Employee> source, Employee.SortState sortOrder) { switch (sortOrder) { case Employee.SortState.FullNameAsc: return(source.OrderBy(e => e.FullName)); case Employee.SortState.FullNameDesc: return(source.OrderByDescending(e => e.FullName)); case Employee.SortState.ExperienceAsc: return(source.OrderBy(e => e.FullName)); case Employee.SortState.ExperienceDesc: return(source.OrderByDescending(e => e.Experience)); case Employee.SortState.PostAsc: return(source.OrderBy(e => e.Post.Name)); case Employee.SortState.PostDesc: return(source.OrderByDescending(e => e.Post.Name)); default: return(source); } }
// GET: Employees public async Task <IActionResult> Index(string fullName, int?experience, int page = 1, Employee.SortState sortOrder = Employee.SortState.FullNameAsc) { int pageSize = 10; IQueryable <Employee> source = _context.Employees.Include(e => e.Post); if (!String.IsNullOrEmpty(fullName)) { source = source.Where(e => e.FullName.Contains(fullName)); } if (experience != null) { source = source.Where(e => e.Experience == experience.Value); } source = EmployeesSort(source, sortOrder); int count = await source.CountAsync(); var items = await source.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync(); EmployeesViewModel viewModel = new EmployeesViewModel() { EmployeesSort = new EmployeesSort(sortOrder), Employees = items, PageViewModel = new PageViewModel(count, page, pageSize), EmployeesFilter = new EmployeesFilter(fullName, experience) }; return(View(viewModel)); }
public EmployeesSort(Employee.SortState sortOrder) { FullNameSort = sortOrder == Employee.SortState.FullNameAsc ? Employee.SortState.FullNameDesc : Employee.SortState.FullNameAsc; ExperienceSort = sortOrder == Employee.SortState.ExperienceAsc ? Employee.SortState.ExperienceDesc : Employee.SortState.ExperienceAsc; PostSort = sortOrder == Employee.SortState.PostAsc ? Employee.SortState.PostDesc : Employee.SortState.PostAsc; Current = sortOrder; }