Beispiel #1
0
 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;
 }
Beispiel #2
0
        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));
        }