public SortProjectModel(SortStateProject sortOrder) { NameSort = sortOrder == SortStateProject.NameAsc ? SortStateProject.NameDesc : SortStateProject.NameAsc; PrioritySort = sortOrder == SortStateProject.PriorityAsc ? SortStateProject.PriorityDesc : SortStateProject.PriorityAsc; StartDateSort = sortOrder == SortStateProject.StartDateAsc ? SortStateProject.StartDateDesc : SortStateProject.StartDateAsc; FinishDateSort = sortOrder == SortStateProject.FinishDateAsc ? SortStateProject.FinishDateDesc : SortStateProject.FinishDateAsc; CustomerSort = sortOrder == SortStateProject.CustomerAsc ? SortStateProject.CustomerDesc : SortStateProject.CustomerAsc; Current = sortOrder; }
public ActionResult AllProjects(int?customer, int?priority, DateTime?start, DateTime?finish, SortStateProject sortOrder = SortStateProject.NameAsc) { var projects = db.Projects.Include(c => c.Customer); //фильтрация по закзачику if (customer != null && customer != 0) { projects = projects.Where(p => p.CustomerId == customer); } if (priority != null && priority != 0) { projects = projects.Where(p => p.Priority == priority); } //фильтрация по диапазону даты начала if (start != null && finish != null) { projects = projects.Where(x => x.StartDate >= start && x.StartDate <= finish); } //сортировка по полям switch (sortOrder) { case SortStateProject.NameDesc: projects = projects.OrderByDescending(prj => prj.Name); break; case SortStateProject.PriorityAsc: projects = projects.OrderBy(prj => prj.Priority); break; case SortStateProject.PriorityDesc: projects = projects.OrderByDescending(prj => prj.Priority); break; case SortStateProject.StartDateAsc: projects = projects.OrderBy(prj => prj.StartDate); break; case SortStateProject.StartDateDesc: projects = projects.OrderByDescending(prj => prj.StartDate); break; case SortStateProject.FinishDateAsc: projects = projects.OrderBy(prj => prj.FinishDate); break; case SortStateProject.FinishDateDesc: projects = projects.OrderByDescending(prj => prj.FinishDate); break; case SortStateProject.CustomerAsc: projects = projects.OrderBy(prj => prj.Customer.Name); break; case SortStateProject.CustomerDesc: projects = projects.OrderByDescending(prj => prj.Customer.Name); break; default: projects = projects.OrderBy(prj => prj.Name); break; } //формирование модели представления AllProjectViewModel viewModel = new AllProjectViewModel { SortProjectModel = new SortProjectModel(sortOrder), FilterProjectModel = new FilterProjectModel(db.Customers.ToList(), customer, start, finish, priority), Projects = projects }; return(View(viewModel)); }