public AddGroupDelegateViewModel( SearchSortFilterPaginationResult <DelegateUserCard> result, IEnumerable <FilterModel> availableFilters, List <CentreRegistrationPrompt> customPrompts, int groupId, string groupName ) : base( result, true, availableFilters ) { GroupId = groupId; GroupName = groupName; var promptsWithOptions = customPrompts.Where(customPrompt => customPrompt.Options.Count > 0); Delegates = result.ItemsToDisplay.Select( delegateUser => { var customFields = PromptsService.GetDelegateRegistrationPrompts(delegateUser, customPrompts); return(new SearchableDelegateViewModel( delegateUser, customFields, promptsWithOptions, null )); } ); }
public void SearchFilterSortAndPaginate_with_filter_only_returns_expected_result() { // Given var availableFilters = new List <FilterModel> { new FilterModel( "Name", "Name", new List <FilterOptionModel> { new FilterOptionModel("A", "Name|Name|A", FilterStatus.Default) } ), }; var options = new SearchSortFilterAndPaginateOptions( null, null, new FilterOptions("Name|Name|A", availableFilters), null ); // When var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate(allItems, options); // Then var expectedResult = new SearchSortFilterPaginationResult <SortableItem>( new PaginationResult <SortableItem>(new[] { new SortableItem("A", 10) }, 1, 1, int.MaxValue, 1, true), null, null, null, "Name|Name|A" ); result.Should().BeEquivalentTo(expectedResult); }
public CurrentPageViewModel( SearchSortFilterPaginationResult <CurrentLearningItem> result, bool apiIsAccessible, string?bannerText ) : base(result, false, searchLabel: "Search your current courses") { ApiIsAccessible = apiIsAccessible; BannerText = bannerText; CurrentActivities = result.ItemsToDisplay.Select <BaseLearningItem, CurrentLearningItemViewModel>( activity => { return(activity switch { CurrentCourse currentCourse => new CurrentCourseViewModel( currentCourse, result.GetReturnPageQuery($"{currentCourse.Id}-course-card") ), SelfAssessment selfAssessment => new SelfAssessmentCardViewModel( selfAssessment, result.GetReturnPageQuery($"{selfAssessment.Id}-sa-card") ), _ => new CurrentLearningResourceViewModel( (ActionPlanResource)activity, result.GetReturnPageQuery($"{activity.Id}-lhr-card") ), }); }
public AllDelegatesViewModel( SearchSortFilterPaginationResult <DelegateUserCard> result, IReadOnlyCollection <CentreRegistrationPrompt> centreRegistrationPrompts, IEnumerable <FilterModel> availableFilters ) : base( result, true, availableFilters, "Search delegates" ) { var promptsWithOptions = centreRegistrationPrompts.Where(registrationPrompt => registrationPrompt.Options.Count > 0); Delegates = result.ItemsToDisplay.Select( delegateUser => { var delegateRegistrationPrompts = PromptsService.GetDelegateRegistrationPrompts(delegateUser, centreRegistrationPrompts); return(new SearchableDelegateViewModel( delegateUser, delegateRegistrationPrompts, promptsWithOptions, result.GetReturnPageQuery($"{delegateUser.Id}-card") )); } ); }
public void SearchFilterSortAndPaginate_with_low_configured_item_limit_returns_javascript_enabled_false() { // Given var options = new SearchSortFilterAndPaginateOptions( null, null, null, new PaginationOptions(1, 8) ); A.CallTo(() => configuration["JavascriptSearchSortFilterPaginateItemLimit"]).Returns("2"); // When var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate(allItems, options); // Then var expectedResult = new SearchSortFilterPaginationResult <SortableItem>( new PaginationResult <SortableItem>(allItems.Take(8), 1, 2, 8, 10, false), null, null, null, null ); result.Should().BeEquivalentTo(expectedResult); }
public CourseDelegatesViewModel( CourseDelegatesData courseDelegatesData, SearchSortFilterPaginationResult <CourseDelegate> result, IEnumerable <FilterModel> availableFilters, string customisationIdQueryParameterName ) { CustomisationId = courseDelegatesData.CustomisationId; var courseOptions = courseDelegatesData.Courses .Select(c => (c.CustomisationId, c.CourseNameWithInactiveFlag)); Courses = SelectListHelper.MapOptionsToSelectListItems(courseOptions, courseDelegatesData.CustomisationId); CourseDetails = courseDelegatesData.CustomisationId.HasValue ? new SelectedCourseDetailsViewModel( result, availableFilters, courseDelegatesData, new Dictionary <string, string> { { customisationIdQueryParameterName, courseDelegatesData.CustomisationId.Value.ToString() } } ) : null; }
public RefactoredFindYourCentreViewModel( SearchSortFilterPaginationResult <CentreSummaryForFindYourCentre> centreSummaries, IEnumerable <FilterModel> availableFilters ) : base(centreSummaries, true, availableFilters, "Search Centres") { CentreSummaries = centreSummaries.ItemsToDisplay; }
public AvailablePageViewModel( SearchSortFilterPaginationResult <AvailableCourse> result, string?bannerText ) : base(result, false, searchLabel: "Search courses") { BannerText = bannerText; AvailableCourses = result.ItemsToDisplay.Select(c => new AvailableCourseViewModel(c)); }
public MyFrameworksViewModel( SearchSortFilterPaginationResult <BrandedFramework> result, bool isFrameworkDeveloper ) : base(result, false) { BrandedFrameworks = result.ItemsToDisplay; IsFrameworkDeveloper = isFrameworkDeveloper; }
public MyStaffListViewModel( AdminUser adminUser, SearchSortFilterPaginationResult <SupervisorDelegateDetailViewModel> result, CentreRegistrationPrompts centreRegistrationPrompts ) : base(result, false, searchLabel: "Search administrators") { AdminUser = adminUser; CentreRegistrationPrompts = centreRegistrationPrompts; SuperviseDelegateDetailViewModels = result.ItemsToDisplay; }
public EmailDelegatesViewModel( SearchSortFilterPaginationResult <DelegateUserCard> result, IEnumerable <FilterModel> availableFilters, EmailDelegatesFormData formData ) : this(result, availableFilters) { SelectedDelegateIds = formData.SelectedDelegateIds; Day = formData.Day; Month = formData.Month; Year = formData.Year; }
public DelegateCoursesViewModel( SearchSortFilterPaginationResult <CourseStatisticsWithAdminFieldResponseCounts> result, IEnumerable <FilterModel> availableFilters ) : base( result, true, availableFilters, "Search courses" ) { Courses = result.ItemsToDisplay.Select(c => new SearchableDelegateCourseStatisticsViewModel(c)); }
public DelegateGroupsViewModel( SearchSortFilterPaginationResult <Group> result, IEnumerable <FilterModel> availableFilters ) : base(result, true, availableFilters) { DelegateGroups = result.ItemsToDisplay.Select(g => { var cardId = $"{g.GroupId}-card"; return(new SearchableDelegateGroupViewModel(g, result.GetReturnPageQuery(cardId))); } ); }
public FaqsPageViewModel( DlsSubApplication dlsSubApplication, SupportPage currentPage, string currentSystemBaseUrl, SearchSortFilterPaginationResult <SearchableFaq> result ) : base(result, false, searchLabel: "Search faqs") { CurrentPage = currentPage; DlsSubApplication = dlsSubApplication; CurrentSystemBaseUrl = currentSystemBaseUrl; Faqs = result.ItemsToDisplay.Select(f => new SearchableFaqViewModel(DlsSubApplication, f)); }
public LearningContentViewModel( SearchSortFilterPaginationResult <ApplicationWithSections> result, IEnumerable <FilterModel> availableFilters, BrandDetail brand, IEnumerable <TutorialSummary> tutorials ) : base(result, true, availableFilters) { BrandId = brand.BrandID; Name = brand.BrandName; Description = brand.BrandDescription; Tutorials = tutorials.Select(t => new BrandTutorialSummaryViewModel(t)); Applications = result.ItemsToDisplay.Select(app => new BrandCourseViewModel(app)); }
public LearningLogViewModel( DelegateAccessRoute accessedVia, LearningLog learningLog, SearchSortFilterPaginationResult <LearningLogEntry> result ) : base(result, false) { AccessedVia = accessedVia; ProgressId = learningLog.DelegateCourseInfo.ProgressId; CustomisationId = learningLog.DelegateCourseInfo.CustomisationId; CourseName = learningLog.DelegateCourseInfo.CourseName; DelegateId = learningLog.DelegateCourseInfo.DelegateId; DelegateFirstName = learningLog.DelegateCourseInfo.DelegateFirstName; DelegateLastName = learningLog.DelegateCourseInfo.DelegateLastName; DelegateEmail = learningLog.DelegateCourseInfo.DelegateEmail; Entries = result.ItemsToDisplay.Select(entry => new LearningLogEntryViewModel(entry)); }
public SelectCourseViewModel( SearchSortFilterPaginationResult <ApplicationDetails> result, IEnumerable <FilterModel> availableFilters, string?categoryFilterString, string?topicFilterString, int?selectedApplicationId = null ) : base( result, true, availableFilters ) { ApplicationOptions = result.ItemsToDisplay.Select(a => new FilterableApplicationSelectListItemViewModel(a, selectedApplicationId)); CategoryFilterString = categoryFilterString; TopicFilterString = topicFilterString; ApplicationId = selectedApplicationId; }
public EmailDelegatesViewModel( SearchSortFilterPaginationResult <DelegateUserCard> result, IEnumerable <FilterModel> availableFilters, bool selectAll = false ) : base(result, true, availableFilters) { Day = DateTime.Today.Day; Month = DateTime.Today.Month; Year = DateTime.Today.Year; Delegates = result.ItemsToDisplay.Select( delegateUser => { var delegateSelected = selectAll || SelectedDelegateIds != null && SelectedDelegateIds.Contains(delegateUser.Id); return(new EmailDelegatesItemViewModel(delegateUser, delegateSelected)); } ); }
public AddCourseToGroupCoursesViewModel( SearchSortFilterPaginationResult <CourseAssessmentDetails> result, IEnumerable <FilterModel> availableFilters, int?adminCategoryFilter, int groupId, string groupName ) : base( result, true, availableFilters, "Search courses" ) { GroupId = groupId; GroupName = groupName; AdminCategoryFilter = adminCategoryFilter; Courses = result.ItemsToDisplay.Select(c => new SearchableCourseViewModel(c, groupId)); }
public CompletedPageViewModel( SearchSortFilterPaginationResult <CompletedLearningItem> result, bool apiIsAccessible, IConfiguration config, string?bannerText ) : base(result, false, searchLabel: "Search your completed courses") { ApiIsAccessible = apiIsAccessible; BannerText = bannerText; CompletedActivities = result.ItemsToDisplay.Select <BaseLearningItem, CompletedLearningItemViewModel>( activity => { return(activity switch { CompletedCourse completedCourse => new CompletedCourseViewModel(completedCourse, config), _ => new CompletedLearningResourceViewModel((CompletedActionPlanResource)activity), }); }
public void SearchFilterSortAndPaginate_with_search_only_returns_expected_result() { // Given var options = new SearchSortFilterAndPaginateOptions(new SearchOptions("A"), null, null, null); // When var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate(allItems, options); // Then var expectedResult = new SearchSortFilterPaginationResult <SortableItem>( new PaginationResult <SortableItem>(new[] { new SortableItem("A", 10) }, 1, 1, int.MaxValue, 1, true), "A", null, null, null ); result.Should().BeEquivalentTo(expectedResult); }
public CentreAdministratorsViewModel( int centreId, SearchSortFilterPaginationResult <AdminUser> result, IEnumerable <FilterModel> availableFilters, AdminUser loggedInAdminUser ) : base( result, true, availableFilters, "Search administrators" ) { CentreId = centreId; Admins = result.ItemsToDisplay.Select( adminUser => new SearchableAdminViewModel( adminUser, loggedInAdminUser, result.GetReturnPageQuery($"{adminUser.Id}-card") ) ); }
public SelectedCourseDetailsViewModel( SearchSortFilterPaginationResult <CourseDelegate> result, IEnumerable <FilterModel> availableFilters, CourseDelegatesData courseDelegatesData, Dictionary <string, string> routeData ) : base(result, true, availableFilters, routeData: routeData) { var currentCourse = courseDelegatesData.Courses.Single(c => c.CustomisationId == courseDelegatesData.CustomisationId); Active = currentCourse.Active; Delegates = result.ItemsToDisplay.Select( d => new DelegateCourseInfoViewModel( d, DelegateAccessRoute.CourseDelegates, result.GetReturnPageQuery($"{d.DelegateId}-card") ) ); Filters = CourseDelegateViewModelFilterOptions.GetAllCourseDelegatesFilterViewModels( courseDelegatesData.CourseAdminFields ); }
public RecommendedLearningViewModel( CurrentSelfAssessment selfAssessment, SearchSortFilterPaginationResult <RecommendedResource> result, bool apiIsAccessible ) : base( result, false, searchLabel: "Search resources" ) { ApiIsAccessible = apiIsAccessible; SelfAssessment = selfAssessment; RecommendedResources = result.ItemsToDisplay.Select( r => new SearchableRecommendedResourceViewModel( r, selfAssessment.Id, result.GetReturnPageQuery($"{r.LearningHubReferenceId}-card") ) ); }
public void SearchFilterSortAndPaginate_with_sort_only_returns_expected_result() { // Given var options = new SearchSortFilterAndPaginateOptions( null, new SortOptions("Number", GenericSortingHelper.Ascending), null, null ); // When var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate(allItems, options); // Then var expectedResult = new SearchSortFilterPaginationResult <SortableItem>( new PaginationResult <SortableItem>(allItems.OrderBy(x => x.Number), 1, 1, int.MaxValue, 10, true), null, "Number", GenericSortingHelper.Ascending, null ); result.Should().BeEquivalentTo(expectedResult); }
public void SearchFilterSortAndPaginate_with_paginate_only_returns_expected_second_page() { // Given var options = new SearchSortFilterAndPaginateOptions( null, null, null, new PaginationOptions(2, 8) ); // When var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate(allItems, options); // Then var expectedResult = new SearchSortFilterPaginationResult <SortableItem>( new PaginationResult <SortableItem>(allItems.Skip(8), 2, 2, 8, 10, true), null, null, null, null ); result.Should().BeEquivalentTo(expectedResult); }
public void SearchFilterSortAndPaginate_with_paginate_only_returns_first_page_with_invalid_page_numbers(int pageNumber) { // Given var options = new SearchSortFilterAndPaginateOptions( null, null, null, new PaginationOptions(pageNumber, 5) ); // When var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate(allItems, options); // Then var expectedResult = new SearchSortFilterPaginationResult <SortableItem>( new PaginationResult <SortableItem>(allItems.Take(5), 1, 2, 5, 10, true), null, null, null, null ); result.Should().BeEquivalentTo(expectedResult); }
public AllFrameworksViewModel( SearchSortFilterPaginationResult <BrandedFramework> result ) : base(result, false) { BrandedFrameworks = result.ItemsToDisplay; }