public IActionResult Index( string?searchString = null, string?sortBy = null, string sortDirection = BaseSearchablePageViewModel.Ascending, string?filterBy = null, string?filterValue = null, int page = 1 ) { sortBy ??= DefaultSortByOptions.Name.PropertyName; filterBy = FilteringHelper.GetFilterBy( filterBy, filterValue, Request, DelegateGroupsFilterCookieName ); var centreId = User.GetCentreId(); var groups = groupsService.GetGroupsForCentre(centreId).ToList(); var model = new DelegateGroupsViewModel( groups, GetRegistrationPromptsWithSetOptions(centreId), searchString, sortBy, sortDirection, filterBy, page ); Response.UpdateOrDeleteFilterCookie(DelegateGroupsFilterCookieName, filterBy); return(View(model)); }
private static void DebugLogNotificationIfEnabled(string notificationTypeName) { if (IDontCareMenu.Instance.IsDebugMode) { FilteringHelper.DebugLog(notificationTypeName, InformationType.Notification); } }
public IActionResult Index(EmailDelegatesViewModel model, string?filterBy = null, string?filterValue = null) { var delegateUsers = GetDelegateUserCards(); if (!ModelState.IsValid) { var newFilterBy = FilteringHelper.GetFilterBy(filterBy, filterValue, Request, EmailDelegateFilterCookieName); var jobGroups = jobGroupsDataService.GetJobGroupsAlphabetical(); var customPrompts = centreCustomPromptHelper.GetCustomPromptsForCentre(User.GetCentreId()); var viewModel = new EmailDelegatesViewModel(delegateUsers, jobGroups, customPrompts, newFilterBy) { SelectedDelegateIds = model.SelectedDelegateIds, Day = model.Day, Month = model.Month, Year = model.Year }; return(View(viewModel)); } var selectedUsers = delegateUsers.Where(user => model.SelectedDelegateIds !.Contains(user.Id)).ToList(); var emailDate = new DateTime(model.Year !.Value, model.Month !.Value, model.Day !.Value); string baseUrl = ConfigHelper.GetAppConfig().GetAppRootPath(); passwordResetService.SendWelcomeEmailsToDelegates(selectedUsers, emailDate, baseUrl); return(View("Confirmation", selectedUsers.Count)); }
public static bool Prefix(ref LogEntry log) { bool shouldPlayerCare = false; // Only IChatNotification log entries are actually displayed to player. Rest are saved in history. if (!(log is IChatNotification) || !IDontCareMenu.Instance.IsFilterEnabled) { return(true); } if (!IDontCareMenu.Instance.IsBlockEverythingMode) { shouldPlayerCare = CheckByFactionsShouldPlayerCare(log); } else { if (IDontCareMenu.Instance.IsDebugMode) { FilteringHelper.DebugLog(log?.GetType()?.Name, InformationType.LogEntry); } return(false); } return(shouldPlayerCare); }
public IActionResult Index( string?searchString = null, string?filterBy = null, string?filterValue = null, int page = 1 ) { filterBy = FilteringHelper.GetFilterBy( filterBy, filterValue, Request, AdminFilterCookieName ); var centreId = User.GetCentreId(); var adminUsersAtCentre = userDataService.GetAdminUsersByCentreId(centreId); var categories = GetCourseCategories(centreId); var model = new CentreAdministratorsViewModel( centreId, adminUsersAtCentre, categories, searchString, filterBy, page ); Response.UpdateOrDeleteFilterCookie(AdminFilterCookieName, filterBy); return(View(model)); }
public void FilterOrResetFilterToDefault_returns_expected_default_filtered_items_with_invalid_filter() { // Given var expectedItems = new[] { ItemA1, ItemA3 }.AsQueryable(); const string defaultFilterString = "Name|Name|a"; const string invalidFilterString = "Name|INVALID|a"; var availableFilters = new List <FilterModel> { new FilterModel( "Name", "Name", new List <FilterOptionModel> { new FilterOptionModel("A", "Name|Name|A", FilterStatus.Default) } ), }; var filterOptions = new FilterOptions(invalidFilterString, availableFilters, defaultFilterString); // When var(resultItems, resultString) = FilteringHelper.FilterOrResetFilterToDefault(InputItems, filterOptions); // Then resultItems.Should().BeEquivalentTo(expectedItems); resultString.Should().BeEquivalentTo(defaultFilterString); }
public CourseSetupViewModel( IEnumerable <CourseStatistics> courses, IEnumerable <string> categories, IEnumerable <string> topics, string?searchString, string sortBy, string sortDirection, string?filterBy, int page ) : base(searchString, page, true, sortBy, sortDirection, filterBy, searchLabel: "Search courses") { var sortedItems = GenericSortingHelper.SortAllItems( courses.AsQueryable(), sortBy, sortDirection ); var filteredItems = FilteringHelper.FilterItems(sortedItems.AsQueryable(), filterBy).ToList(); var searchedItems = GenericSearchHelper.SearchItems(filteredItems, SearchString).ToList(); MatchingSearchResults = searchedItems.Count; SetTotalPages(); var paginatedItems = GetItemsOnCurrentPage(searchedItems); Courses = paginatedItems.Select(c => new SearchableCourseStatisticsViewModel(c)); Filters = CourseStatisticsViewModelFilterOptions.GetFilterOptions(categories, topics); }
public SearchSortFilterPaginationResult <T> SearchFilterSortAndPaginate <T>( IEnumerable <T> items, SearchSortFilterAndPaginateOptions searchSortFilterAndPaginateOptions ) where T : BaseSearchableItem { var allItems = items.ToList(); var itemsToReturn = allItems; string?appliedFilterString = null; var javascriptSearchSortFilterPaginateShouldBeEnabled = allItems.Count <= configuration.GetJavascriptSearchSortFilterPaginateItemLimit(); if (searchSortFilterAndPaginateOptions.SearchOptions != null) { itemsToReturn = (searchSortFilterAndPaginateOptions.SearchOptions.UseTokeniseScorer ? GenericSearchHelper.SearchItemsUsingTokeniseScorer( itemsToReturn, searchSortFilterAndPaginateOptions.SearchOptions.SearchString, searchSortFilterAndPaginateOptions.SearchOptions.SearchMatchCutoff ) : GenericSearchHelper.SearchItems( itemsToReturn, searchSortFilterAndPaginateOptions.SearchOptions.SearchString, searchSortFilterAndPaginateOptions.SearchOptions.SearchMatchCutoff )).ToList(); } if (searchSortFilterAndPaginateOptions.FilterOptions != null) { var filteringReturnTuple = FilteringHelper.FilterOrResetFilterToDefault( itemsToReturn, searchSortFilterAndPaginateOptions.FilterOptions ); itemsToReturn = filteringReturnTuple.filteredItems.ToList(); appliedFilterString = filteringReturnTuple.appliedFilterString; } if (searchSortFilterAndPaginateOptions.SortOptions != null) { itemsToReturn = GenericSortingHelper.SortAllItems( itemsToReturn.AsQueryable(), searchSortFilterAndPaginateOptions.SortOptions.SortBy, searchSortFilterAndPaginateOptions.SortOptions.SortDirection ).ToList(); } var paginateResult = PaginateItems( itemsToReturn, searchSortFilterAndPaginateOptions.PaginationOptions, javascriptSearchSortFilterPaginateShouldBeEnabled ); return(new SearchSortFilterPaginationResult <T>( paginateResult, searchSortFilterAndPaginateOptions.SearchOptions?.SearchString, searchSortFilterAndPaginateOptions.SortOptions?.SortBy, searchSortFilterAndPaginateOptions.SortOptions?.SortDirection, appliedFilterString )); }
public void AddNewFilterToFilterString_appends_new_filter() { // When var result = FilteringHelper.AddNewFilterToFilterString("Test", "Filter"); // Then result.Should().Be("Test╡Filter"); }
public void AddNewFilterToFilterString_returns_new_filter_if_existingFilterString_is_null() { // When var result = FilteringHelper.AddNewFilterToFilterString(null, "Test"); // Then result.Should().Be("Test"); }
public void GetFilterString_with_clearFilters_true_returns_null() { // When var result = FilteringHelper.GetFilterString("FilterString", null, true, httpRequest, CookieName); // Then result.Should().BeNull(); }
public void AddNewFilterToFilterString_doesnt_append_with_null_new_filter() { // When var result = FilteringHelper.AddNewFilterToFilterString("Test", null); // Then result.Should().Be("Test"); }
public void GetFilterBy_with_CLEAR_filterBy_and_no_filterValue_returns_null() { // When var result = FilteringHelper.GetFilterBy("CLEAR", null, httpRequest, CookieName); // Then result.Should().BeNull(); }
public void GetFilterBy_with_filterBy_and_filterValue_returns_combined_filter_by() { // When var result = FilteringHelper.GetFilterBy("filter-by", "filter-value", httpRequest, CookieName); // Then result.Should().Be("filter-by╡filter-value"); }
public void GetFilterBy_with_CLEAR_filterBy_and_set_filterValue_returns_filterValue() { // When var result = FilteringHelper.GetFilterBy("CLEAR", "filter-value", httpRequest, CookieName); // Then result.Should().Be("filter-value"); }
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 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 AddNewFilterToFilterBy_appends_new_filter_even_if_substring(string filterBy, string newFilterValue) { // When var result = FilteringHelper.AddNewFilterToFilterBy(filterBy, newFilterValue); // Then result.Should().Be($"{filterBy}╡{newFilterValue}"); }
promptsWithOptions.Select( customPrompt => new FilterModel( $"CentreRegistrationPrompt{customPrompt.RegistrationField.Id}", customPrompt.PromptText, FilteringHelper.GetPromptFilterOptions(customPrompt) ) ) );
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( 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 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 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 void AddNewFilterToFilterString_doesnt_append_with_new_filter_already_in_filterString( string filterString, string newFilterToAdd ) { // When var result = FilteringHelper.AddNewFilterToFilterString(filterString, newFilterToAdd); // Then result.Should().Be(filterString); }
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 void AddNewFilterToFilterString_appends_new_filter_even_if_substring( string filterString, string newFilterToAdd ) { // When var result = FilteringHelper.AddNewFilterToFilterString(filterString, newFilterToAdd); // Then result.Should().Be($"{filterString}╡{newFilterToAdd}"); }
public void AddNewFilterToFilterBy_doesnt_append_with_new_filter_already_in_filterBy( string filterBy, string newFilterValue ) { // When var result = FilteringHelper.AddNewFilterToFilterBy(filterBy, newFilterValue); // Then result.Should().Be(filterBy); }
public void FilterItems_with_some_filters_in_same_group_returns_expected_items() { // Given var expectedItems = new[] { ItemA3 }.AsQueryable(); const string filterString = "Group|Name|a╡Group|Name|b╡Number|Number|3"; // When var result = FilteringHelper.FilterItems(InputItems, filterString); // Then result.Should().BeEquivalentTo(expectedItems); }
public void FilterItems_returns_expected_items_with_multiple_filters() { // Given var expectedItems = new[] { ItemA1 }.AsQueryable(); const string filterString = "Name|Name|a╡Number|Number|1"; // When var result = FilteringHelper.FilterItems(InputItems, filterString); // Then result.Should().BeEquivalentTo(expectedItems); }
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(); }