diff --git a/DigitalLearningSolutions.Data/Models/SessionData/Supervisor/SessionEnrolOnRoleProfile.cs b/DigitalLearningSolutions.Data/Models/SessionData/Supervisor/SessionEnrolOnRoleProfile.cs index 29b7b1b261..6d2f3e777a 100644 --- a/DigitalLearningSolutions.Data/Models/SessionData/Supervisor/SessionEnrolOnRoleProfile.cs +++ b/DigitalLearningSolutions.Data/Models/SessionData/Supervisor/SessionEnrolOnRoleProfile.cs @@ -6,5 +6,6 @@ public class SessionEnrolOnRoleProfile public int? SelfAssessmentID { get; set; } public DateTime? CompleteByDate { get; set; } public int? SelfAssessmentSupervisorRoleId { get; set; } + public bool ActionConfirmed { get; set; } } } diff --git a/DigitalLearningSolutions.Web/Controllers/SupervisorController/Supervisor.cs b/DigitalLearningSolutions.Web/Controllers/SupervisorController/Supervisor.cs index 8a42ac8f73..fbeea40adb 100644 --- a/DigitalLearningSolutions.Web/Controllers/SupervisorController/Supervisor.cs +++ b/DigitalLearningSolutions.Web/Controllers/SupervisorController/Supervisor.cs @@ -391,7 +391,7 @@ public IActionResult ReviewDelegateSelfAssessment(int supervisorDelegateId, int foreach (var competency in competencies) { competency.CompetencyFlags = flags.Where(f => f.CompetencyId == competency.Id); - }; + } if (superviseDelegate.DelegateUserID != null) { @@ -784,18 +784,6 @@ public IActionResult EnrolSetRoleProfile(int supervisorDelegateId, int selfAsses }; return View("EnrolDelegateOnProfileAssessment", model); } - var retirementDate = selfAssessmentService.GetSelfAssessmentById(selfAssessmentID).RetirementDate; - if (retirementDate?.Date is DateTime date && date >= DateTime.Today && - date <= DateTime.Today.AddDays(14)) - { - var model = new RetiringSelfAssessmentViewModel() - { - SelfAssessmentID = selfAssessmentID, - SupervisorDelegateID = supervisorDelegateId, - RetirementDate = retirementDate - }; - return View("ConfirmRetiringSelfAssessment", model); - } sessionEnrolOnRoleProfile.SelfAssessmentID = selfAssessmentID; multiPageFormService.SetMultiPageFormData( @@ -803,6 +791,13 @@ public IActionResult EnrolSetRoleProfile(int supervisorDelegateId, int selfAsses MultiPageFormDataFeature.EnrolDelegateOnProfileAssessment, TempData ); + + var retirementDate = selfAssessmentService.GetSelfAssessmentById(selfAssessmentID).RetirementDate; + if (CheckRetirementDate(retirementDate)) + { + return RedirectToAction("ConfirmRetiringSelfAssessment", "Supervisor", new { supervisorDelegateId }); + } + return RedirectToAction( "EnrolDelegateCompleteBy", "Supervisor", @@ -810,22 +805,48 @@ public IActionResult EnrolSetRoleProfile(int supervisorDelegateId, int selfAsses ); } - [HttpPost] - public IActionResult RetiringSelfAssessmentConfirmed(RetiringSelfAssessmentViewModel retiringSelfAssessment) + [Route("/Supervisor/Staff/{supervisorDelegateId}/ProfileAssessment/Enrol/Confirm")] + public IActionResult ConfirmRetiringSelfAssessment(int supervisorDelegateId) { - if (ModelState.IsValid && retiringSelfAssessment.ActionConfirmed) + var sessionEnrolOnRoleProfile = multiPageFormService.GetMultiPageFormData( + MultiPageFormDataFeature.EnrolDelegateOnProfileAssessment, + TempData + ).GetAwaiter().GetResult(); + + var retirementDate = selfAssessmentService.GetSelfAssessmentById((int)sessionEnrolOnRoleProfile.SelfAssessmentID).RetirementDate; + if (!CheckRetirementDate((retirementDate))) { - var sessionEnrolOnRoleProfile = multiPageFormService.GetMultiPageFormData( + return RedirectToAction("StatusCode", "LearningSolutions", new { code = 410 }); + } + var model = new RetiringSelfAssessmentViewModel() + { + SelfAssessmentID = (int)sessionEnrolOnRoleProfile.SelfAssessmentID, + SupervisorDelegateID = supervisorDelegateId, + RetirementDate = retirementDate, + ActionConfirmed = sessionEnrolOnRoleProfile.ActionConfirmed + }; + return View("ConfirmRetiringSelfAssessment", model); + } + + [HttpPost] + [Route("/Supervisor/Staff/{supervisorDelegateId}/ProfileAssessment/Enrol/Confirm")] + public IActionResult ConfirmRetiringSelfAssessment(RetiringSelfAssessmentViewModel retiringSelfAssessment) + { + var sessionEnrolOnRoleProfile = multiPageFormService.GetMultiPageFormData( MultiPageFormDataFeature.EnrolDelegateOnProfileAssessment, TempData ).GetAwaiter().GetResult(); - sessionEnrolOnRoleProfile.SelfAssessmentID = retiringSelfAssessment.SelfAssessmentID; - multiPageFormService.SetMultiPageFormData( - sessionEnrolOnRoleProfile, - MultiPageFormDataFeature.EnrolDelegateOnProfileAssessment, - TempData - ); + sessionEnrolOnRoleProfile.SelfAssessmentID = retiringSelfAssessment.SelfAssessmentID; + sessionEnrolOnRoleProfile.ActionConfirmed = retiringSelfAssessment.ActionConfirmed; + multiPageFormService.SetMultiPageFormData( + sessionEnrolOnRoleProfile, + MultiPageFormDataFeature.EnrolDelegateOnProfileAssessment, + TempData + ); + + if (ModelState.IsValid && retiringSelfAssessment.ActionConfirmed) + { return RedirectToAction( "EnrolDelegateCompleteBy", "Supervisor", @@ -850,11 +871,12 @@ public IActionResult EnrolDelegateCompleteBy(int supervisorDelegateId, int? day, MultiPageFormDataFeature.EnrolDelegateOnProfileAssessment, TempData ).GetAwaiter().GetResult(); - multiPageFormService.SetMultiPageFormData( - sessionEnrolOnRoleProfile, - MultiPageFormDataFeature.EnrolDelegateOnProfileAssessment, - TempData - ); + + var retirementDate = selfAssessmentService.GetSelfAssessmentById((int)sessionEnrolOnRoleProfile.SelfAssessmentID).RetirementDate; + if (CheckRetirementDate(retirementDate) && !sessionEnrolOnRoleProfile.ActionConfirmed) + { + return RedirectToAction("ConfirmRetiringSelfAssessment", "Supervisor", new { supervisorDelegateId }); + } var supervisorDelegate = supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminId(), 0); var roleProfile = supervisorService.GetRoleProfileById((int)sessionEnrolOnRoleProfile.SelfAssessmentID); @@ -862,7 +884,8 @@ public IActionResult EnrolDelegateCompleteBy(int supervisorDelegateId, int? day, { SupervisorDelegateDetail = supervisorDelegate, RoleProfile = roleProfile, - CompleteByDate = sessionEnrolOnRoleProfile.CompleteByDate + CompleteByDate = sessionEnrolOnRoleProfile.CompleteByDate, + ActionConfirmed = sessionEnrolOnRoleProfile.ActionConfirmed }; if (day != null && month != null && year != null) { @@ -1008,6 +1031,13 @@ public IActionResult EnrolDelegateSummary(int supervisorDelegateId) MultiPageFormDataFeature.EnrolDelegateOnProfileAssessment, TempData ); + + var retirementDate = selfAssessmentService.GetSelfAssessmentById((int)sessionEnrolOnRoleProfile.SelfAssessmentID).RetirementDate; + if (CheckRetirementDate(retirementDate) && !sessionEnrolOnRoleProfile.ActionConfirmed) + { + return RedirectToAction("ConfirmRetiringSelfAssessment", "Supervisor", new { supervisorDelegateId }); + } + var supervisorDelegate = supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminId(), 0); var roleProfile = supervisorService.GetRoleProfileById((int)sessionEnrolOnRoleProfile.SelfAssessmentID); @@ -1035,6 +1065,7 @@ public IActionResult EnrolDelegateSummary(int supervisorDelegateId) ViewBag.completeByMonth = TempData["completeByMonth"]; ViewBag.completeByYear = TempData["completeByYear"]; ViewBag.navigatedFrom = TempData["navigatedFrom"]; + ViewBag.actionConfirmed = sessionEnrolOnRoleProfile.ActionConfirmed; return View("EnrolDelegateSummary", model); } @@ -1558,5 +1589,15 @@ private static string RenderRazorViewToString(Controller controller, string view return sw.GetStringBuilder().ToString(); } } + + private bool CheckRetirementDate(DateTime? date) + { + if (date == null) + return false; + + DateTime retirementOffsetDate = DateTime.Today.AddDays(14); + DateTime today = DateTime.Today; + return (date >= today && date <= retirementOffsetDate); + } } } diff --git a/DigitalLearningSolutions.Web/ViewModels/Supervisor/EnrolDelegateSetCompletByDateViewModel.cs b/DigitalLearningSolutions.Web/ViewModels/Supervisor/EnrolDelegateSetCompletByDateViewModel.cs index cac66da25f..935e257fb5 100644 --- a/DigitalLearningSolutions.Web/ViewModels/Supervisor/EnrolDelegateSetCompletByDateViewModel.cs +++ b/DigitalLearningSolutions.Web/ViewModels/Supervisor/EnrolDelegateSetCompletByDateViewModel.cs @@ -11,5 +11,6 @@ public class EnrolDelegateSetCompletByDateViewModel public RoleProfile RoleProfile { get; set; } public DateTime? CompleteByDate { get; set; } public OldDateValidator.ValidationResult? CompleteByValidationResult { get; set; } + public bool ActionConfirmed { get; set; } } } diff --git a/DigitalLearningSolutions.Web/Views/Supervisor/ConfirmRetiringSelfAssessment.cshtml b/DigitalLearningSolutions.Web/Views/Supervisor/ConfirmRetiringSelfAssessment.cshtml index ca4b515446..1975ad33eb 100644 --- a/DigitalLearningSolutions.Web/Views/Supervisor/ConfirmRetiringSelfAssessment.cshtml +++ b/DigitalLearningSolutions.Web/Views/Supervisor/ConfirmRetiringSelfAssessment.cshtml @@ -36,7 +36,7 @@ label=" I understand this self-assessment is being retired and I still want to enrol learners." hint-text="" /> - @Html.HiddenFor(m => m.SelfAssessmentID) diff --git a/DigitalLearningSolutions.Web/Views/Supervisor/EnrolDelegateSetCompleteBy.cshtml b/DigitalLearningSolutions.Web/Views/Supervisor/EnrolDelegateSetCompleteBy.cshtml index f527dcf89b..272e559230 100644 --- a/DigitalLearningSolutions.Web/Views/Supervisor/EnrolDelegateSetCompleteBy.cshtml +++ b/DigitalLearningSolutions.Web/Views/Supervisor/EnrolDelegateSetCompleteBy.cshtml @@ -120,7 +120,7 @@
- + Back diff --git a/DigitalLearningSolutions.Web/Views/Supervisor/EnrolDelegateSummary.cshtml b/DigitalLearningSolutions.Web/Views/Supervisor/EnrolDelegateSummary.cshtml index 8de3967863..375ae9d7f2 100644 --- a/DigitalLearningSolutions.Web/Views/Supervisor/EnrolDelegateSummary.cshtml +++ b/DigitalLearningSolutions.Web/Views/Supervisor/EnrolDelegateSummary.cshtml @@ -81,6 +81,20 @@
+ @if (ViewBag.actionConfirmed) + { +
+
+ Retiring confirmed +
+
+ Yes +
+
+
+ +
+ }