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 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 FilterItems_returns_expected_items_with_filter_with_bracket_in_it() { // Given var expectedItems = new[] { ItemA1, ItemA3 }.AsQueryable(); const string filterString = "Name(Field name)|Name|a"; // When var result = FilteringHelper.FilterItems(InputItems, filterString); // Then result.Should().BeEquivalentTo(expectedItems); }
public void FilterItems_with_filters_in_same_group_returns_no_duplicates() { // Given var expectedItems = new[] { ItemA1, ItemA3 }.AsQueryable(); var filterBy = "Group|Name|a╡Group|Name|a"; // When var result = FilteringHelper.FilterItems(InputItems, filterBy); // Then result.Should().BeEquivalentTo(expectedItems); }
public void FilterItems_returns_expected_items_with_single_filter() { // Given var expectedItems = new[] { ItemA1, ItemA3 }.AsQueryable(); var filterBy = "Name|Name|a"; // When var result = FilteringHelper.FilterItems(InputItems, filterBy); // Then result.Should().BeEquivalentTo(expectedItems); }
private void PopulateCourseDelegatesSheetForCourse( IXLWorkbook workbook, int customisationId, int centreId, string?sortBy, string?filterString, string sortDirection ) { var adminFields = courseAdminFieldsService.GetCourseAdminFieldsForCourse(customisationId); var customRegistrationPrompts = registrationPromptsService.GetCentreRegistrationPromptsByCentreId(centreId); var courseDelegates = courseDataService.GetDelegatesOnCourseForExport(customisationId, centreId) .ToList(); var filteredCourseDelegates = FilteringHelper.FilterItems(courseDelegates.AsQueryable(), filterString).ToList(); var sortedCourseDelegates = GenericSortingHelper.SortAllItems( filteredCourseDelegates.AsQueryable(), sortBy ?? nameof(CourseDelegateForExport.FullNameForSearchingSorting), sortDirection ); var dataTable = new DataTable(); SetUpDataTableColumns(customRegistrationPrompts, adminFields, dataTable); foreach (var courseDelegate in sortedCourseDelegates) { AddDelegateToDataTable(dataTable, courseDelegate, customRegistrationPrompts, adminFields); } if (dataTable.Rows.Count == 0) { var row = dataTable.NewRow(); dataTable.Rows.Add(row); } ClosedXmlHelper.AddSheetToWorkbook( workbook, $"Course {customisationId}", dataTable.AsEnumerable(), XLTableTheme.None ); FormatWorksheetColumns(workbook, dataTable); }
private IEnumerable <DelegateUserCard> GetDelegatesToExport( int centreId, string?searchString, string?sortBy, string sortDirection, string?filterString ) { var delegateUsers = userDataService.GetDelegateUserCardsByCentreId(centreId); var searchedUsers = GenericSearchHelper.SearchItems(delegateUsers, searchString).AsQueryable(); var filteredItems = FilteringHelper.FilterItems(searchedUsers, filterString).AsQueryable(); var sortedItems = GenericSortingHelper.SortAllItems( filteredItems, sortBy ?? nameof(DelegateUserCard.SearchableName), sortDirection ); return(sortedItems); }
private IEnumerable <CourseStatisticsWithAdminFieldResponseCounts> GetCoursesToExport( int centreId, int?adminCategoryId, string?searchString, string?sortBy, string?filterString, string sortDirection ) { var details = courseService.GetCentreCourseDetailsWithAllCentreCourses(centreId, adminCategoryId); var searchedCourses = GenericSearchHelper.SearchItems(details.Courses, searchString); var filteredCourses = FilteringHelper.FilterItems(searchedCourses.AsQueryable(), filterString); var sortedCourses = GenericSortingHelper.SortAllItems( filteredCourses.AsQueryable(), sortBy ?? nameof(CourseStatisticsWithAdminFieldResponseCounts.CourseName), sortDirection ); return(sortedCourses); }
public DelegateGroupsViewModel( List <Group> groups, IEnumerable <CustomPrompt> registrationPrompts, string searchString, string sortBy, string sortDirection, string?filterBy, int page ) : base(searchString, page, true, sortBy, sortDirection, filterBy) { var sortedItems = GenericSortingHelper.SortAllItems( groups.AsQueryable(), sortBy, sortDirection ); var searchedItems = GenericSearchHelper.SearchItems(sortedItems, SearchString); var filteredItems = FilteringHelper.FilterItems(searchedItems.AsQueryable(), filterBy).ToList(); MatchingSearchResults = filteredItems.Count; SetTotalPages(); var paginatedItems = GetItemsOnCurrentPage(filteredItems); DelegateGroups = paginatedItems.Select(g => new SearchableDelegateGroupViewModel(g)); var admins = groups.Select(g => (g.AddedByAdminId, g.AddedByName)).Distinct(); Filters = new[] { new FilterViewModel( nameof(Group.AddedByAdminId), "Added by", DelegateGroupsViewModelFilterOptions.GetAddedByOptions(admins) ), new FilterViewModel( nameof(Group.LinkedToField), "Linked field", DelegateGroupsViewModelFilterOptions.GetLinkedFieldOptions(registrationPrompts) ) }; }
public CentreAdministratorsViewModel( int centreId, IEnumerable <AdminUser> adminUsers, IEnumerable <string> categories, string?searchString, string?filterBy, int page ) : base(searchString, page, true, filterBy: filterBy, searchLabel: "Search administrators") { CentreId = centreId; var sortedItems = GenericSortingHelper.SortAllItems( adminUsers.AsQueryable(), DefaultSortOption, Ascending ); var searchedItems = GenericSearchHelper.SearchItems(sortedItems, SearchString); var filteredItems = FilteringHelper.FilterItems(searchedItems.AsQueryable(), filterBy).ToList(); MatchingSearchResults = filteredItems.Count; SetTotalPages(); var paginatedItems = GetItemsOnCurrentPage(filteredItems); Admins = paginatedItems.Select(adminUser => new SearchableAdminViewModel(adminUser)); Filters = new[] { new FilterViewModel("Role", "Role", AdministratorsViewModelFilterOptions.RoleOptions), new FilterViewModel( "CategoryName", "Category", AdministratorsViewModelFilterOptions.GetCategoryOptions(categories) ), new FilterViewModel( "AccountStatus", "Account Status", AdministratorsViewModelFilterOptions.AccountStatusOptions ) }; }