Пример #1
0
        public void GetFilterString_with_clearFilters_true_returns_null()
        {
            // When
            var result = FilteringHelper.GetFilterString("FilterString", null, true, httpRequest, CookieName);

            // Then
            result.Should().BeNull();
        }
Пример #2
0
        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");
        }
Пример #3
0
        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));
        }
Пример #6
0
        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));
        }
Пример #8
0
        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));
        }
Пример #9
0
        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));
        }
Пример #10
0
        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));
        }
Пример #12
0
        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");
        }
Пример #13
0
        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));
        }
Пример #15
0
        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);
        }
Пример #16
0
        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());
            }
        }