Exemple #1
0
        public IActionResult Index(
            string?searchString         = null,
            string?sortBy               = null,
            string sortDirection        = GenericSortingHelper.Ascending,
            string?existingFilterString = null,
            string?newFilterToAdd       = null,
            bool clearFilters           = false,
            int page         = 1,
            int?itemsPerPage = null
            )
        {
            sortBy ??= DefaultSortByOptions.Name.PropertyName;
            existingFilterString = FilteringHelper.GetFilterString(
                existingFilterString,
                newFilterToAdd,
                clearFilters,
                Request,
                CourseFilterCookieName,
                CourseStatusFilterOptions.IsActive.FilterValue
                );

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

            var details = courseService.GetCentreCourseDetailsWithAllCentreCourses(centreId, categoryId);

            var availableFilters = DelegateCourseStatisticsViewModelFilterOptions
                                   .GetFilterOptions(categoryId.HasValue ? new string[] { } : details.Categories, details.Topics).ToList();

            var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions(
                new SearchOptions(searchString),
                new SortOptions(sortBy, sortDirection),
                new FilterOptions(
                    existingFilterString,
                    availableFilters,
                    CourseStatusFilterOptions.IsActive.FilterValue
                    ),
                new PaginationOptions(page, itemsPerPage)
                );

            var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate(
                details.Courses,
                searchSortPaginationOptions
                );

            var model = new DelegateCoursesViewModel(
                result,
                availableFilters
                );

            Response.UpdateFilterCookie(CourseFilterCookieName, result.FilterString);

            return(View(model));
        }
Exemple #2
0
        public void GetFilterOptions_excludes_category_option_if_passed_no_categories()
        {
            // When
            var result =
                DelegateCourseStatisticsViewModelFilterOptions.GetFilterOptions(new string[] { }, filterableTopics);

            // Then
            result.Should().BeEquivalentTo(
                new List <FilterModel>
            {
                expectedTopicsFilterViewModel,
                expectedStatusFilterViewModel,
                expectedHasAdminFieldsFilterViewModel,
            }
                );
        }
Exemple #3
0
        public void GetFilterOptions_correctly_sets_up_filters()
        {
            // When
            var result =
                DelegateCourseStatisticsViewModelFilterOptions.GetFilterOptions(filterableCategories, filterableTopics);

            // Then
            result.Should().BeEquivalentTo(
                new List <FilterModel>
            {
                expectedCategoriesFilterViewModel,
                expectedTopicsFilterViewModel,
                expectedStatusFilterViewModel,
                expectedHasAdminFieldsFilterViewModel,
            }
                );
        }