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 void Delegate_removal_for_valid_delegate_returns_redirect_to_action() { // given A.CallTo(() => userDataService.GetDelegateUserCardById(1)) .Returns(new DelegateUserCard { CentreId = 2, Id = 1 }); A.CallTo(() => courseDataService.GetCourseNameAndApplication(1)) .Returns(new CourseNameInfo()); A.CallTo( () => courseService.DelegateHasCurrentProgress( 1, 1 ) ) .Returns(true); var model = new RemoveFromCourseViewModel { Confirm = true }; // when var result = viewDelegateController.ExecuteRemoveFromCourse(1, 1, model); // then result.Should().BeRedirectToActionResult(); }
public void Delegate_removal_for_delegate_with_no_active_progress_returns_not_found_result() { // Given var delegateCourseInfo = new DelegateCourseInfo(); var delegateCourseDetails = new DetailedCourseProgress( new Progress(), new List <DetailedSectionProgress>(), delegateCourseInfo ); A.CallTo(() => progressService.GetDetailedCourseProgress(ProgressId)) .Returns(delegateCourseDetails); A.CallTo(() => courseService.DelegateHasCurrentProgress(ProgressId)) .Returns(false); var model = new RemoveFromCourseViewModel { Confirm = true, AccessedVia = DelegateAccessRoute.ViewDelegate, }; // When var result = delegateProgressController.ExecuteRemoveFromCourse( ProgressId, DelegateAccessRoute.ViewDelegate, model ); // Then result.Should().BeNotFoundResult(); }
public void Delegate_removal_for_valid_delegate_returns_redirect_to_action_course_delegates() { // Given var delegateCourseInfo = new DelegateCourseInfo { DelegateId = DelegateId, CustomisationId = CustomisationId }; var delegateCourseDetails = new DetailedCourseProgress( new Progress { CandidateId = DelegateId, CustomisationId = CustomisationId }, new List <DetailedSectionProgress>(), delegateCourseInfo ); A.CallTo(() => progressService.GetDetailedCourseProgress(ProgressId)) .Returns(delegateCourseDetails); A.CallTo(() => courseService.DelegateHasCurrentProgress(ProgressId)) .Returns(true); var model = new RemoveFromCourseViewModel { Confirm = true, AccessedVia = DelegateAccessRoute.CourseDelegates, ReturnPageQuery = ReturnPageQueryHelper.GetDefaultReturnPageQuery(), }; // When var result = delegateProgressController.ExecuteRemoveFromCourse( ProgressId, DelegateAccessRoute.CourseDelegates, model ); // Then result.Should() .BeRedirectToActionResult() .WithActionName("Index") .WithControllerName("CourseDelegates") .WithRouteValue("customisationId", CustomisationId.ToString()); }
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 IActionResult ExecuteRemoveFromCourse( int delegateId, int customisationId, RemoveFromCourseViewModel model ) { if (!ModelState.IsValid) { return(View("ConfirmRemoveFromCourse", model)); } if (!courseService.DelegateHasCurrentProgress(delegateId, customisationId)) { return(new NotFoundResult()); } courseService.RemoveDelegateFromCourse( delegateId, customisationId, RemovalMethod.RemovedByAdmin ); return(RedirectToAction("Index", new { delegateId })); }