public IActionResult All(string typeLocation, string type, int page = 1)
        {
            int count = this.projectService.GetCountByTypeOfChamber(typeLocation, type);

            var viewModel = new AllProjectViewModel
            {
                Projects =
                    this.projectService.GetAllProjectAsync <IndexProjectViewModel>(
                        typeLocation,
                        type,
                        GlobalConstants.ItemsPerPage,
                        (page - 1) * GlobalConstants.ItemsPerPage),
                PagesCount  = (int)Math.Ceiling((double)count / GlobalConstants.ItemsPerPage),
                CurrentPage = page,
            };

            if (viewModel.PagesCount == 0)
            {
                viewModel.PagesCount = 1;
            }

            this.TempData["returnToallProjectstypeLocation"] = typeLocation;
            this.TempData["returnToallProjectsType"]         = type;
            return(this.View(viewModel));
        }
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));
        }