public SortEmployeeViewModel(SortStateEmployee SortStateEmployee) { FullNameSort = SortStateEmployee == SortStateEmployee.FullNameAsc ? SortStateEmployee.FullNameDesc : SortStateEmployee.FullNameAsc; SalarySort = SortStateEmployee == SortStateEmployee.SalaryAsc ? SortStateEmployee.SalaryDesc : SortStateEmployee.SalaryAsc; AgeSort = SortStateEmployee == SortStateEmployee.AgeAsc ? SortStateEmployee.AgeDesc : SortStateEmployee.AgeAsc; RaitingSort = SortStateEmployee == SortStateEmployee.RaitingAsc ? SortStateEmployee.RaitingDesc : SortStateEmployee.RaitingAsc; DepartamentSort = SortStateEmployee == SortStateEmployee.DepartamentAsc ? SortStateEmployee.DepartamentDesc : SortStateEmployee.DepartamentAsc; CurrentState = SortStateEmployee; }
public async Task <IActionResult> Index(int?fullName, int?age, double?salary, double?raiting, int page = 1, SortStateEmployee employeeSort = SortStateEmployee.FullNameAsc) { //фильтрация IQueryable <Employee> companyContext = _context.Employees .Include(d => d.Departament); if (fullName != null && fullName != 0) { companyContext = companyContext.Where(d => d.Id == fullName); } if (age != null && age.Value != 0) { companyContext = companyContext.Where(d => d.Age == age); } if (salary != null && salary.Value != 0) { companyContext = companyContext.Where(d => d.Salary == salary); } if (raiting != null && raiting.Value != 0) { companyContext = companyContext.Where(d => d.Raiting == raiting); } //сортировка switch (employeeSort) { case SortStateEmployee.AgeAsc: companyContext = companyContext.OrderBy(d => d.Age); break; case SortStateEmployee.AgeDesc: companyContext = companyContext.OrderByDescending(d => d.Age); break; case SortStateEmployee.FullNameAsc: companyContext = companyContext.OrderBy(d => d.FullName); break; case SortStateEmployee.FullNameDesc: companyContext = companyContext.OrderByDescending(d => d.FullName); break; case SortStateEmployee.SalaryAsc: companyContext = companyContext.OrderBy(d => d.Salary); break; case SortStateEmployee.SalaryDesc: companyContext = companyContext.OrderByDescending(d => d.Salary); break; case SortStateEmployee.RaitingAsc: companyContext = companyContext.OrderBy(d => d.Raiting); break; case SortStateEmployee.RaitingDesc: companyContext = companyContext.OrderByDescending(d => d.Raiting); break; case SortStateEmployee.DepartamentAsc: companyContext = companyContext.OrderBy(d => d.Departament.FullName); break; case SortStateEmployee.DepartamentDesc: companyContext = companyContext.OrderByDescending(d => d.Departament.FullName); break; default: companyContext = companyContext.OrderBy(d => d.FullName); break; } //разбиение на страницы var count = await companyContext.CountAsync(); var companys = await companyContext.Skip((page - 1) *pageSize).Take(pageSize).ToListAsync(); //формирование представления IndexEmployeeViewModel employeesView = new IndexEmployeeViewModel { Employees = companys, PageViewModel = new PageViewModel(count, page, pageSize), SortEmployeeViewModel = new SortEmployeeViewModel(employeeSort), FilterEmployeeViewModel = new FilterEmployeeViewModel(companyContext.ToList(), fullName, age, salary, raiting) }; return(View(employeesView)); }