public IActionResult EditDelegateCourseAdminField(
            int progressId,
            int promptNumber,
            DelegateAccessRoute accessedVia,
            ReturnPageQuery?returnPageQuery = null
            )
        {
            var delegateCourseProgress =
                progressService.GetDetailedCourseProgress(progressId);

            var courseAdminField = courseAdminFieldsService.GetCourseAdminFieldsForCourse(
                delegateCourseProgress !.CustomisationId
                ).AdminFields.Find(caf => caf.PromptNumber == promptNumber);

            if (courseAdminField == null)
            {
                return(new NotFoundResult());
            }

            var model = new EditDelegateCourseAdminFieldViewModel(
                progressId,
                promptNumber,
                delegateCourseProgress,
                accessedVia,
                returnPageQuery
                );

            return(View(model));
        }
        public IActionResult ExecuteRemoveFromCourse(
            int progressId,
            DelegateAccessRoute accessedVia,
            RemoveFromCourseViewModel model
            )
        {
            if (!ModelState.IsValid)
            {
                return(View("ConfirmRemoveFromCourse", model));
            }

            var progress = progressService.GetDetailedCourseProgress(progressId);

            if (!courseService.DelegateHasCurrentProgress(progressId) || progress == null)
            {
                return(new NotFoundResult());
            }

            courseService.RemoveDelegateFromCourse(
                progress.DelegateId,
                progress.CustomisationId,
                RemovalMethod.RemovedByAdmin
                );

            return(RedirectToPreviousPage(progress.DelegateId, progress.CustomisationId, accessedVia, model.ReturnPageQuery));
        }
        public IActionResult EditDelegateCourseAdminField(
            EditDelegateCourseAdminFieldFormData formData,
            int promptNumber,
            int progressId,
            DelegateAccessRoute accessedVia
            )
        {
            if (!ModelState.IsValid)
            {
                var delegateCourseProgress =
                    progressService.GetDetailedCourseProgress(progressId);

                var model = new EditDelegateCourseAdminFieldViewModel(
                    formData,
                    delegateCourseProgress !,
                    progressId,
                    promptNumber,
                    accessedVia
                    );
                return(View(model));
            }

            progressService.UpdateCourseAdminFieldForDelegate(progressId, promptNumber, formData.Answer?.Trim());

            return(RedirectToPreviousPage(formData.DelegateId, formData.CustomisationId, accessedVia, formData.ReturnPageQuery));
        }
        public void EditSupervisorPost_redirects_to_correct_action(
            DelegateAccessRoute accessedVia,
            string expectedController,
            string expectedAction
            )
        {
            // Given
            const int supervisorId = 1;
            var       formData     = new EditSupervisorFormData
            {
                SupervisorId    = supervisorId,
                ReturnPageQuery = ReturnPageQueryHelper.GetDefaultReturnPageQuery(itemIdToReturnTo: CardId),
            };

            A.CallTo(() => progressService.UpdateSupervisor(ProgressId, supervisorId)).DoesNothing();

            // When
            var result = delegateProgressController.EditSupervisor(formData, ProgressId, accessedVia);

            // Then
            var expectedFragment = accessedVia.Equals(DelegateAccessRoute.CourseDelegates) ? CardId : null;

            result.Should().BeRedirectToActionResult().WithControllerName(expectedController)
            .WithActionName(expectedAction).WithFragment(expectedFragment);
        }
        public void UnlockCourseProgress_redirects_to_correct_action_and_unlocks_progress_and_sends_notification(
            DelegateAccessRoute accessedVia,
            string expectedController,
            string expectedAction,
            ReturnPageQuery?returnPageQuery
            )
        {
            // Given
            A.CallTo(() => progressService.UnlockProgress(ProgressId)).DoesNothing();

            // When
            var result = delegateProgressController.UnlockProgress(
                ProgressId,
                CustomisationId,
                DelegateId,
                accessedVia,
                returnPageQuery
                );

            // Then
            A.CallTo(() => progressService.UnlockProgress(ProgressId)).MustHaveHappened();
            var expectedFragment = accessedVia.Equals(DelegateAccessRoute.CourseDelegates)
                ? returnPageQuery !.Value.ItemIdToReturnTo
                : null;

            result.Should().BeRedirectToActionResult().WithControllerName(expectedController)
            .WithActionName(expectedAction).WithFragment(expectedFragment);
        }
        public void EditDelegateCourseAdminField_POST_calls_service_and_redirects_to_correct_action(
            DelegateAccessRoute accessedVia,
            string expectedController,
            string expectedAction
            )
        {
            // Given
            const int    promptNumber = 1;
            const string answer       = "Test Answer";
            var          formData     = new EditDelegateCourseAdminFieldFormData
            {
                Answer          = answer,
                ReturnPageQuery = ReturnPageQueryHelper.GetDefaultReturnPageQuery(itemIdToReturnTo: CardId),
            };

            A.CallTo(() => progressService.UpdateCourseAdminFieldForDelegate(A <int> ._, A <int> ._, A <string> ._))
            .DoesNothing();

            // When
            var result = delegateProgressController.EditDelegateCourseAdminField(
                formData,
                promptNumber,
                ProgressId,
                accessedVia
                );

            // Then
            A.CallTo(() => progressService.UpdateCourseAdminFieldForDelegate(ProgressId, promptNumber, answer))
            .MustHaveHappenedOnceExactly();
            var expectedFragment = accessedVia.Equals(DelegateAccessRoute.CourseDelegates) ? CardId : null;

            result.Should().BeRedirectToActionResult().WithControllerName(expectedController)
            .WithActionName(expectedAction).WithFragment(expectedFragment);
        }
        public void EditCompleteByDatePost_redirects_to_correct_action(
            DelegateAccessRoute accessedVia,
            string expectedController,
            string expectedAction
            )
        {
            // Given
            var formData = new EditCompleteByDateFormData
            {
                Day             = 1,
                Month           = 1,
                Year            = 2021,
                ReturnPageQuery = ReturnPageQueryHelper.GetDefaultReturnPageQuery(itemIdToReturnTo: CardId),
            };

            A.CallTo(() => progressService.UpdateCompleteByDate(ProgressId, A <DateTime?> ._)).DoesNothing();

            // When
            var result = delegateProgressController.EditCompleteByDate(formData, ProgressId, accessedVia);

            // Then
            var expectedFragment = accessedVia.Equals(DelegateAccessRoute.CourseDelegates) ? CardId : null;

            result.Should().BeRedirectToActionResult().WithControllerName(expectedController)
            .WithActionName(expectedAction).WithFragment(expectedFragment);
        }
        public IActionResult LearningLog(
            int progressId,
            DelegateAccessRoute accessedVia,
            string?sortBy        = null,
            string sortDirection = GenericSortingHelper.Descending
            )
        {
            sortBy ??= LearningLogSortByOptions.When.PropertyName;
            var learningLog = courseService.GetLearningLogDetails(progressId);

            if (learningLog == null)
            {
                return(NotFound());
            }

            var searchSortPaginationOptions = new SearchSortFilterAndPaginateOptions(
                null,
                new SortOptions(sortBy, sortDirection),
                null,
                null
                );

            var result = searchSortFilterPaginateService.SearchFilterSortAndPaginate(
                learningLog.Entries,
                searchSortPaginationOptions
                );

            var model = new LearningLogViewModel(accessedVia, learningLog, result);

            return(View(model));
        }
Beispiel #9
0
 public EditCompletionDateViewModel(
     EditCompletionDateFormData formData,
     int progressId,
     DelegateAccessRoute accessedVia
     ) : base(formData)
 {
     ProgressId  = progressId;
     AccessedVia = accessedVia;
 }
 public DelegateCourseInfoViewModel(
     DelegateCourseInfo delegateCourseInfo,
     DelegateAccessRoute accessedVia,
     ReturnPageQuery?returnPageQuery = null
     ) : this(delegateCourseInfo)
 {
     AccessedVia     = accessedVia;
     ReturnPageQuery = returnPageQuery;
 }
 public DelegateCourseInfoViewModel(
     CourseDelegate courseDelegate,
     DelegateAccessRoute accessedVia,
     ReturnPageQuery returnPageQuery
     ) : this(courseDelegate)
 {
     AccessedVia     = accessedVia;
     ReturnPageQuery = returnPageQuery;
     Tags            = FilterableTagHelper.GetCurrentTagsForCourseDelegate(courseDelegate);
 }
Beispiel #12
0
 public EditCompletionDateViewModel(
     int progressId,
     DelegateAccessRoute accessedVia,
     DelegateCourseInfo info,
     ReturnPageQuery?returnPageQuery
     ) : base(info, returnPageQuery)
 {
     ProgressId  = progressId;
     AccessedVia = accessedVia;
 }
 public EditSupervisorViewModel(
     EditSupervisorFormData formData,
     int progressId,
     DelegateAccessRoute accessedVia,
     IEnumerable <AdminUser> supervisors
     ) : base(formData)
 {
     ProgressId  = progressId;
     AccessedVia = accessedVia;
     Supervisors = PopulateSupervisors(formData.SupervisorId, supervisors);
 }
        public IActionResult UnlockProgress(
            int progressId,
            int customisationId,
            int delegateId,
            DelegateAccessRoute accessedVia,
            ReturnPageQuery?returnPageQuery
            )
        {
            progressService.UnlockProgress(progressId);

            return(RedirectToPreviousPage(delegateId, customisationId, accessedVia, returnPageQuery));
        }
 public EditSupervisorViewModel(
     int progressId,
     DelegateAccessRoute accessedVia,
     IEnumerable <AdminUser> supervisors,
     DelegateCourseInfo info,
     ReturnPageQuery?returnPageQuery
     ) : base(info, returnPageQuery)
 {
     ProgressId  = progressId;
     AccessedVia = accessedVia;
     Supervisors = PopulateSupervisors(info.SupervisorAdminId, supervisors);
 }
        public IActionResult Index(int progressId, DelegateAccessRoute accessedVia)
        {
            var courseDelegatesData =
                progressService.GetDetailedCourseProgress(progressId);

            var model = new DelegateProgressViewModel(
                accessedVia,
                courseDelegatesData !,
                configuration
                );

            return(View(model));
        }
        private IActionResult RedirectToPreviousPage(
            int delegateId,
            int customisationId,
            DelegateAccessRoute accessedVia,
            ReturnPageQuery?returnPageQuery
            )
        {
            if (accessedVia.Equals(DelegateAccessRoute.CourseDelegates))
            {
                var routeData = returnPageQuery !.Value.ToRouteDataDictionary();
                routeData.Add("customisationId", customisationId.ToString());
                return(RedirectToAction("Index", "CourseDelegates", routeData, returnPageQuery.Value.ItemIdToReturnTo));
            }

            return(RedirectToAction("Index", "ViewDelegate", new { delegateId }));
        }
        public IActionResult AllLearningLogEntries(
            int progressId,
            DelegateAccessRoute accessedVia
            )
        {
            var learningLog = courseService.GetLearningLogDetails(progressId);

            if (learningLog == null)
            {
                return(NotFound());
            }

            var model = new AllLearningLogEntriesViewModel(learningLog.Entries);

            return(View(model));
        }
Beispiel #19
0
        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 IActionResult EditSupervisor(
            EditSupervisorFormData formData,
            int progressId,
            DelegateAccessRoute accessedVia
            )
        {
            if (!ModelState.IsValid)
            {
                var supervisors = userService.GetSupervisorsAtCentre(User.GetCentreId());
                var model       = new EditSupervisorViewModel(formData, progressId, accessedVia, supervisors);
                return(View(model));
            }

            progressService.UpdateSupervisor(progressId, formData.SupervisorId);

            return(RedirectToPreviousPage(formData.DelegateId, formData.CustomisationId, accessedVia, formData.ReturnPageQuery));
        }
        public IActionResult EditCompletionDate(
            int progressId,
            DelegateAccessRoute accessedVia,
            ReturnPageQuery?returnPageQuery
            )
        {
            var delegateCourseProgress =
                progressService.GetDetailedCourseProgress(progressId);

            var model = new EditCompletionDateViewModel(
                progressId,
                accessedVia,
                delegateCourseProgress !,
                returnPageQuery
                );

            return(View(model));
        }
Beispiel #22
0
 public RemoveFromCourseViewModel(
     DetailedCourseProgress progress,
     bool confirm,
     DelegateAccessRoute accessedVia,
     ReturnPageQuery?returnPageQuery
     )
 {
     DelegateId = progress.DelegateId;
     Name       = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(
         progress.DelegateFirstName,
         progress.DelegateLastName
         );
     CustomisationId = progress.CustomisationId;
     ProgressId      = progress.ProgressId;
     CourseName      = progress.CourseName;
     Confirm         = confirm;
     AccessedVia     = accessedVia;
     ReturnPageQuery = returnPageQuery;
 }
        public IActionResult EditCompletionDate(
            EditCompletionDateFormData formData,
            int progressId,
            DelegateAccessRoute accessedVia
            )
        {
            if (!ModelState.IsValid)
            {
                var model = new EditCompletionDateViewModel(formData, progressId, accessedVia);
                return(View(model));
            }

            var completionDate = formData.Year != null
                ? new DateTime(formData.Year.Value, formData.Month !.Value, formData.Day !.Value)
                : (DateTime?)null;

            progressService.UpdateCompletionDate(progressId, completionDate);

            return(RedirectToPreviousPage(formData.DelegateId, formData.CustomisationId, accessedVia, formData.ReturnPageQuery));
        }
Beispiel #24
0
        public EditDelegateCourseAdminFieldViewModel(
            EditDelegateCourseAdminFieldFormData formData,
            DelegateCourseInfo delegateCourseInfo,
            int progressId,
            int promptNumber,
            DelegateAccessRoute accessedVia
            ) : base(formData)
        {
            var courseAdminField = delegateCourseInfo.CourseAdminFields.Single(c => c.PromptNumber == promptNumber);

            Options      = courseAdminField !.Options;
            Radios       = GetRadioItems(delegateCourseInfo, promptNumber);
            PromptText   = courseAdminField.PromptText;
            CourseName   = delegateCourseInfo.CourseName;
            DelegateName = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(
                delegateCourseInfo.DelegateFirstName,
                delegateCourseInfo.DelegateLastName
                );
            ProgressId  = progressId;
            AccessedVia = accessedVia;
        }
Beispiel #25
0
        public EditDelegateCourseAdminFieldViewModel(
            int progressId,
            int promptNumber,
            DelegateCourseInfo delegateCourseInfo,
            DelegateAccessRoute accessedVia,
            ReturnPageQuery?returnPageQuery = null
            ) : base(delegateCourseInfo, returnPageQuery)
        {
            var courseAdminField = delegateCourseInfo.CourseAdminFields.Single(c => c.PromptNumber == promptNumber);

            Options      = courseAdminField.Options;
            Answer       = delegateCourseInfo.GetAnswer(promptNumber);
            Radios       = GetRadioItems(delegateCourseInfo, promptNumber);
            PromptText   = courseAdminField.PromptText;
            CourseName   = delegateCourseInfo.CourseName;
            DelegateName = DisplayStringHelper.GetNonSortableFullNameForDisplayOnly(
                delegateCourseInfo.DelegateFirstName,
                delegateCourseInfo.DelegateLastName
                );
            ProgressId  = progressId;
            AccessedVia = accessedVia;
        }
        public IActionResult ConfirmRemoveFromCourse(
            int progressId,
            DelegateAccessRoute accessedVia,
            ReturnPageQuery?returnPageQuery = null
            )
        {
            var progress = progressService.GetDetailedCourseProgress(progressId);

            if (!courseService.DelegateHasCurrentProgress(progressId) || progress == null)
            {
                return(new NotFoundResult());
            }

            var model = new RemoveFromCourseViewModel(
                progress,
                false,
                accessedVia,
                returnPageQuery
                );

            return(View(model));
        }
        public DelegateProgressViewModel(
            DelegateAccessRoute accessedVia,
            DetailedCourseProgress progress,
            IConfiguration config,
            ReturnPageQuery?returnPageQuery = null
            ) : base(progress, accessedVia, returnPageQuery)
        {
            IsCourseActive = progress.IsCourseActive;

            AdminFields = progress.CourseAdminFields.Select(
                cp =>
                new DelegateCourseAdminField(
                    cp.PromptNumber,
                    cp.PromptText,
                    cp.Answer
                    )
                )
                          .ToList();

            ProgressDownloadUrl = OldSystemEndpointHelper.GetDownloadSummaryUrl(config, progress.ProgressId);;

            Sections = progress.Sections.Select(s => new SectionProgressViewModel(s));
        }
        public IActionResult EditSupervisor(
            int progressId,
            DelegateAccessRoute accessedVia,
            ReturnPageQuery?returnPageQuery
            )
        {
            var centreId = User.GetCentreId();
            var delegateCourseProgress =
                progressService.GetDetailedCourseProgress(progressId);
            var supervisors = userService.GetSupervisorsAtCentreForCategory(
                centreId,
                delegateCourseProgress !.CourseCategoryId
                );

            var model = new EditSupervisorViewModel(
                progressId,
                accessedVia,
                supervisors,
                delegateCourseProgress,
                returnPageQuery
                );

            return(View(model));
        }