public void GetAllCourseDelegatesFilterViewModels_should_return_correct_admin_field_filters() { // Given var(adminFields, expectedFilters) = GetSampleAdminFieldsAndFilters(); // When var result = CourseDelegateViewModelFilterOptions.GetAllCourseDelegatesFilterViewModels( adminFields ); // Then expectedFilters.ForEach(expectedFilter => result.Should().ContainEquivalentOf(expectedFilter)); }
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()); } }