Esempio n. 1
0
        public IActionResult Index(
            int?customisationId  = null,
            string?sortBy        = null,
            string sortDirection = BaseSearchablePageViewModel.Ascending,
            string?filterBy      = null,
            string?filterValue   = null,
            int page             = 1
            )
        {
            sortBy ??= DefaultSortByOptions.Name.PropertyName;
            var newFilterBy = FilteringHelper.GetFilterBy(
                filterBy,
                filterValue,
                Request,
                CourseDelegatesFilterCookieName
                );

            var centreId        = User.GetCentreId();
            var adminCategoryId = User.GetAdminCourseCategoryFilter();
            CourseDelegatesData courseDelegatesData;

            try
            {
                courseDelegatesData =
                    courseDelegatesService.GetCoursesAndCourseDelegatesForCentre(
                        centreId,
                        adminCategoryId,
                        customisationId
                        );
            }
            catch (CourseNotFoundException)
            {
                return(NotFound());
            }

            var model = new CourseDelegatesViewModel(
                courseDelegatesData,
                "customisationId",
                sortBy,
                sortDirection,
                newFilterBy,
                page
                );

            Response.UpdateOrDeleteFilterCookie(CourseDelegatesFilterCookieName, newFilterBy);
            return(View(model));
        }
        public IActionResult Index(
            int?customisationId         = null,
            string?searchString         = null,
            string?sortBy               = null,
            string sortDirection        = GenericSortingHelper.Ascending,
            string?existingFilterString = null,
            string?newFilterToAdd       = null,
            bool clearFilters           = false,
            int page = 1
            )
        {
            sortBy ??= DefaultSortByOptions.Name.PropertyName;
            var newFilterString = FilteringHelper.GetFilterString(
                existingFilterString,
                newFilterToAdd,
                clearFilters,
                Request,
                CourseDelegatesFilterCookieName,
                CourseDelegateAccountStatusFilterOptions.Active.FilterValue
                );

            var centreId        = User.GetCentreId();
            var adminCategoryId = User.GetAdminCourseCategoryFilter();

            try
            {
                var courseDelegatesData = courseDelegatesService.GetCoursesAndCourseDelegatesForCentre(
                    centreId,
                    adminCategoryId,
                    customisationId
                    );

                var availableFilters = CourseDelegateViewModelFilterOptions.GetAllCourseDelegatesFilterViewModels(
                    courseDelegatesData.CourseAdminFields
                    );

                var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions(
                    new SearchOptions(searchString),
                    new SortOptions(sortBy, sortDirection),
                    new FilterOptions(
                        newFilterString,
                        availableFilters,
                        CourseDelegateAccountStatusFilterOptions.Active.FilterValue
                        ),
                    new PaginationOptions(page)
                    );

                var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate(
                    courseDelegatesData.Delegates,
                    searchSortPaginationOptions
                    );

                var model = new CourseDelegatesViewModel(
                    courseDelegatesData,
                    result,
                    availableFilters,
                    "customisationId"
                    );

                Response.UpdateFilterCookie(CourseDelegatesFilterCookieName, result.FilterString);
                return(View(model));
            }
            catch (CourseAccessDeniedException)
            {
                return(NotFound());
            }
        }