public void GetFilterString_with_clearFilters_true_returns_null() { // When var result = FilteringHelper.GetFilterString("FilterString", null, true, httpRequest, CookieName); // Then result.Should().BeNull(); }
public void GetFilterString_with_no_parameters_and_no_cookies_returns_defaultFilterValue() { // When var result = FilteringHelper.GetFilterString(null, null, false, httpRequest, CookieName, "default-filter"); // Then result.Should().Be("default-filter"); }
public void GetFilterString_with_clearFilters_true_does_not_append_new_filter() { // When var result = FilteringHelper.GetFilterString("FilterString", "newFilter", true, httpRequest, CookieName); // Then result.Should().BeNull(); }
public IActionResult Index( int page = 1, string?searchString = null, string?sortBy = null, string sortDirection = GenericSortingHelper.Ascending, string?existingFilterString = null, string?newFilterToAdd = null, bool clearFilters = false, int?itemsPerPage = null ) { sortBy ??= DefaultSortByOptions.Name.PropertyName; existingFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, DelegateFilterCookieName, DelegateActiveStatusFilterOptions.IsActive.FilterValue ); var centreId = User.GetCentreId(); var jobGroups = jobGroupsDataService.GetJobGroupsAlphabetical(); var customPrompts = promptsService.GetCentreRegistrationPrompts(centreId).ToList(); var delegateUsers = userDataService.GetDelegateUserCardsByCentreId(centreId); var promptsWithOptions = customPrompts.Where(customPrompt => customPrompt.Options.Count > 0); var availableFilters = AllDelegatesViewModelFilterOptions.GetAllDelegatesFilterViewModels( jobGroups, promptsWithOptions ); var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions( new SearchOptions(searchString), new SortOptions(sortBy, sortDirection), new FilterOptions( existingFilterString, availableFilters, DelegateActiveStatusFilterOptions.IsActive.FilterValue ), new PaginationOptions(page, itemsPerPage) ); var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate( delegateUsers, searchSortPaginationOptions ); var model = new AllDelegatesViewModel( result, customPrompts, availableFilters ); Response.UpdateFilterCookie(DelegateFilterCookieName, result.FilterString); return(View(model)); }
public IActionResult Index( int brandId, int page = 1, string?sortBy = null, string sortDirection = GenericSortingHelper.Ascending, string?existingFilterString = null, string?newFilterToAdd = null, bool clearFilters = false ) { var brand = brandsService.GetPublicBrandById(brandId); if (brand == null) { return(NotFound()); } sortBy ??= DefaultSortByOptions.Name.PropertyName; existingFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, BrandCoursesFilterCookieName ); var tutorials = tutorialService.GetPublicTutorialSummariesForBrand(brandId); var applications = courseService.GetApplicationsThatHaveSectionsByBrandId(brandId).ToList(); var categories = applications.Select(x => x.CategoryName).Distinct().OrderBy(x => x).ToList(); var topics = applications.Select(x => x.CourseTopic).Distinct().OrderBy(x => x).ToList(); var availableFilters = LearningContentViewModelFilterOptions .GetFilterOptions(categories, topics).ToList(); var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions( null, new SortOptions(sortBy, sortDirection), new FilterOptions( existingFilterString, availableFilters ), new PaginationOptions(page) ); var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate( applications, searchSortPaginationOptions ); var model = new LearningContentViewModel(result, availableFilters, brand, tutorials); Response.UpdateFilterCookie(BrandCoursesFilterCookieName, result.FilterString); return(View(model)); }
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.GetCentreCourseDetails(centreId, categoryId); var availableFilters = CourseStatisticsViewModelFilterOptions .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 CourseSetupViewModel( result, availableFilters, config ); Response.UpdateFilterCookie(CourseFilterCookieName, result.FilterString); return(View(model)); }
public IActionResult AddCourseToGroupSelectCourse( int groupId, string?searchString = null, string?existingFilterString = null, string?newFilterToAdd = null, bool clearFilters = false, int page = 1 ) { existingFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, GroupAddCourseFilterCookieName ); var centreId = User.GetCentreId(); var adminCategoryFilter = User.GetAdminCourseCategoryFilter(); var courses = courseService.GetEligibleCoursesToAddToGroup(centreId, adminCategoryFilter, groupId).ToList(); var categories = courseService.GetCategoriesForCentreAndCentrallyManagedCourses(centreId); var topics = courseService.GetTopicsForCentreAndCentrallyManagedCourses(centreId); var groupName = groupsService.GetGroupName(groupId, centreId); var availableFilters = (adminCategoryFilter == null ? AddCourseToGroupViewModelFilterOptions.GetAllCategoriesFilters(categories, topics) : AddCourseToGroupViewModelFilterOptions.GetSingleCategoryFilters(courses)).ToList(); var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions( new SearchOptions(searchString), new SortOptions(nameof(CourseAssessmentDetails.CourseName), GenericSortingHelper.Ascending), new FilterOptions(existingFilterString, availableFilters), new PaginationOptions(page) ); var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate( courses, searchSortPaginationOptions ); var model = new AddCourseToGroupCoursesViewModel( result, availableFilters, adminCategoryFilter, groupId, groupName ! ); Response.UpdateFilterCookie(GroupAddCourseFilterCookieName, result.FilterString); return(View(model)); }
public async Task <IActionResult> Index( int page = 1, string?searchString = null, string?existingFilterString = null, string?newFilterToAdd = null, bool clearFilters = false, int?itemsPerPage = null ) { if (!await featureManager.IsEnabledAsync(FeatureFlags.RefactoredFindYourCentrePage)) { var model = new FindYourCentreViewModel(configuration); return(View("Index", model)); } existingFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, FindCentreFilterCookieName ); var centreSummaries = centresService.GetAllCentreSummariesForFindCentre(); var regions = regionDataService.GetRegionsAlphabetical(); var availableFilters = FindYourCentreViewModelFilterOptions .GetFindCentreFilterModels(regions).ToList(); var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions( new SearchOptions(searchString, searchMatchCutoff: 90), null, new FilterOptions( existingFilterString, availableFilters ), new PaginationOptions(page, itemsPerPage) ); var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate( centreSummaries, searchSortPaginationOptions ); var refactoredModel = new RefactoredFindYourCentreViewModel( result, availableFilters ); Response.UpdateFilterCookie(FindCentreFilterCookieName, result.FilterString); return(View("RefactoredFindYourCentre", refactoredModel)); }
public IActionResult SelectDelegate( int groupId, string?searchString = null, string?existingFilterString = null, string?newFilterToAdd = null, bool clearFilters = false, int page = 1 ) { existingFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, AddGroupDelegateCookieName ); var centreId = User.GetCentreId(); var jobGroups = jobGroupsService.GetJobGroupsAlphabetical().ToList(); var customPrompts = promptsService.GetCentreRegistrationPrompts(centreId).ToList(); var delegateUsers = userService.GetDelegatesNotRegisteredForGroupByGroupId(groupId, centreId); var groupName = groupsService.GetGroupName(groupId, centreId); var promptsWithOptions = customPrompts.Where(customPrompt => customPrompt.Options.Count > 0); var availableFilters = GroupDelegatesViewModelFilterOptions.GetAddGroupDelegateFilterViewModels( jobGroups, promptsWithOptions ); var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions( new SearchOptions(searchString), new SortOptions( DefaultSortByOptions.Name.PropertyName, GenericSortingHelper.Ascending ), new FilterOptions(existingFilterString, availableFilters), new PaginationOptions(page) ); var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate( delegateUsers, searchSortPaginationOptions ); var model = new AddGroupDelegateViewModel( result, availableFilters, customPrompts, groupId, groupName ! ); Response.UpdateFilterCookie(AddGroupDelegateCookieName, result.FilterString); return(View(model)); }
public void GetFilterString_with_EmptyFiltersCookieValue_returns_null() { // Given A.CallTo(() => httpRequest.Cookies.ContainsKey(CookieName)).Returns(true); A.CallTo(() => httpRequest.Cookies[CookieName]).Returns(FilteringHelper.EmptyFiltersCookieValue); // When var result = FilteringHelper.GetFilterString(null, null, false, httpRequest, CookieName); // Then result.Should().BeNull(); }
public IActionResult Index( EmailDelegatesFormData formData, string?existingFilterString = null, string?newFilterToAdd = null, bool clearFilters = false ) { var delegateUsers = GetDelegateUserCards(); if (!ModelState.IsValid) { var newFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, EmailDelegateFilterCookieName ); var jobGroups = jobGroupsDataService.GetJobGroupsAlphabetical(); var customPrompts = promptsService.GetCentreRegistrationPrompts(User.GetCentreId()); var promptsWithOptions = customPrompts.Where(customPrompt => customPrompt.Options.Count > 0); var availableFilters = EmailDelegatesViewModelFilterOptions.GetEmailDelegatesFilterModels( jobGroups, promptsWithOptions ); var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions( null, null, new FilterOptions(newFilterString, availableFilters), null ); var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate( delegateUsers, searchSortPaginationOptions ); var viewModel = new EmailDelegatesViewModel(result, availableFilters, formData); return(View(viewModel)); } var selectedUsers = delegateUsers.Where(user => formData.SelectedDelegateIds !.Contains(user.Id)).ToList(); var emailDate = new DateTime(formData.Year !.Value, formData.Month !.Value, formData.Day !.Value); var baseUrl = config.GetAppRootPath(); passwordResetService.SendWelcomeEmailsToDelegates(selectedUsers, emailDate, baseUrl); return(View("Confirmation", selectedUsers.Count)); }
public void GetFilterString_with_existingFilterString_and_newFilterToAdd_returns_combined_filter_by() { // When var result = FilteringHelper.GetFilterString( "existing-filter-string", "filter-value", false, httpRequest, CookieName ); // Then result.Should().Be("existing-filter-string╡filter-value"); }
public void GetFilterString_with_no_parameters_returns_cookie_value() { // Given const string cookieValue = "Cookie Value"; A.CallTo(() => httpRequest.Cookies.ContainsKey(CookieName)).Returns(true); A.CallTo(() => httpRequest.Cookies[CookieName]).Returns(cookieValue); // When var result = FilteringHelper.GetFilterString(null, null, false, httpRequest, CookieName); // Then result.Should().Be(cookieValue); }
public IActionResult Index( string?searchString = null, string?existingFilterString = null, string?newFilterToAdd = null, bool clearFilters = false, int page = 1, int?itemsPerPage = null ) { existingFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, AdminFilterCookieName ); var centreId = User.GetCentreId(); var adminUsersAtCentre = userDataService.GetAdminUsersByCentreId(centreId); var categories = courseCategoriesDataService.GetCategoriesForCentreAndCentrallyManagedCourses(centreId); var loggedInUserId = User.GetAdminId(); var loggedInAdminUser = userDataService.GetAdminUserById(loggedInUserId !.GetValueOrDefault()); var availableFilters = AdministratorsViewModelFilterOptions.GetAllAdministratorsFilterModels(categories); var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions( new SearchOptions(searchString), new SortOptions(GenericSortingHelper.DefaultSortOption, GenericSortingHelper.Ascending), new FilterOptions(existingFilterString, availableFilters), new PaginationOptions(page, itemsPerPage) ); var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate( adminUsersAtCentre, searchSortPaginationOptions ); var model = new CentreAdministratorsViewModel( centreId, result, availableFilters, loggedInAdminUser ! ); Response.UpdateFilterCookie(AdminFilterCookieName, result.FilterString); return(View(model)); }
public void GetFilterString_with_newFilterToAdd_and_cookie_returns_new_filter() { // Given const string cookieValue = "Cookie Value"; const string newFilter = "newFilter"; A.CallTo(() => httpRequest.Cookies.ContainsKey(CookieName)).Returns(true); A.CallTo(() => httpRequest.Cookies[CookieName]).Returns(cookieValue); // When var result = FilteringHelper.GetFilterString(null, newFilter, false, httpRequest, CookieName); // Then result.Should().Be(newFilter); }
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 ) { sortBy ??= DefaultSortByOptions.Name.PropertyName; existingFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, DelegateGroupsFilterCookieName ); var centreId = User.GetCentreId(); var groups = groupsService.GetGroupsForCentre(centreId).ToList(); var registrationPrompts = GetRegistrationPromptsWithSetOptions(centreId); var availableFilters = DelegateGroupsViewModelFilterOptions .GetDelegateGroupFilterModels(groups, registrationPrompts).ToList(); var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions( new SearchOptions(searchString), new SortOptions(sortBy, sortDirection), new FilterOptions(existingFilterString, availableFilters), new PaginationOptions(page) ); var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate( groups, searchSortPaginationOptions ); var model = new DelegateGroupsViewModel( result, availableFilters ); Response.UpdateFilterCookie(DelegateGroupsFilterCookieName, result.FilterString); return(View(model)); }
public IActionResult Index( string?existingFilterString = null, string?newFilterToAdd = null, bool clearFilters = false, bool selectAll = false ) { var newFilterString = FilteringHelper.GetFilterString( existingFilterString, newFilterToAdd, clearFilters, Request, EmailDelegateFilterCookieName ); var jobGroups = jobGroupsDataService.GetJobGroupsAlphabetical(); var customPrompts = promptsService.GetCentreRegistrationPrompts(User.GetCentreId()); var delegateUsers = GetDelegateUserCards(); var promptsWithOptions = customPrompts.Where(customPrompt => customPrompt.Options.Count > 0); var availableFilters = EmailDelegatesViewModelFilterOptions.GetEmailDelegatesFilterModels( jobGroups, promptsWithOptions ); var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions( null, null, new FilterOptions(newFilterString, availableFilters), null ); var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate( delegateUsers, searchSortPaginationOptions ); var model = new EmailDelegatesViewModel( result, availableFilters, selectAll ); Response.UpdateFilterCookie(EmailDelegateFilterCookieName, result.FilterString); 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()); } }