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;
        }
Пример #2
0
        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));
        }