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)); }
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, } ); }
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, } ); }