From 667dfae7eaacbbdf5ab55c18305d0b22e1348305 Mon Sep 17 00:00:00 2001 From: Rohit Shrivastava Date: Wed, 25 Mar 2026 11:28:28 +0000 Subject: [PATCH] TD-7032 Replicating Supervisor Sign Off Panel At The Top Of The Page --- .../SelfAssessmentOverview.cshtml | 58 +------------- .../_SupervisorSignOffPanel.cshtml | 77 +++++++++++++++++++ 2 files changed, 79 insertions(+), 56 deletions(-) create mode 100644 DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/_SupervisorSignOffPanel.cshtml diff --git a/DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/SelfAssessmentOverview.cshtml b/DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/SelfAssessmentOverview.cshtml index a63546665e..d1f4fe94de 100644 --- a/DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/SelfAssessmentOverview.cshtml +++ b/DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/SelfAssessmentOverview.cshtml @@ -80,11 +80,7 @@ } @if (Model.SelfAssessment.IsSupervised && Model.CompetencyGroups.Count() > 5) { -
- -
+ } @if ((competencyQuestionsSummary == competencyVerifiedSummary) && (Model.NumberOfSelfAssessedOptionalCompetencies < Model.SelfAssessment.MinimumOptionalCompetencies)) @@ -190,57 +186,7 @@ } @if (Model.SelfAssessment.IsSupervised) { -
- -

@Model.SelfAssessment.SignOffRoleName Sign-off

- (int)c["questionsCount"]) == competencySummaries.Sum(c => (int)c["verifiedCount"]) }, - { "IsOngoingSelfAssessment", latestResult > latestSignoff }})" /> - @if (Model.AllQuestionsVerifiedOrNotRequired) - { - @if (!Model.SupervisorSignOffs.Any()) - { -

You have not yet requested @Model.SelfAssessment.SignOffRoleName sign-off for this self assessment.

- } - else if (!Model.SupervisorSignOffs.Where(x => x.Verified == null).Any() && latestResult > latestSignoff) - { -
-

- - New self assessment results - New self assessment results - -

-

- You have submitted new self assessment results since this self assessment was signed off. - Please resubmit your self assessment for sign off once these results are confirmed. -

-
- } - @if (!Model.SupervisorSignOffs.Where(x => x.Verified == null).Any() - && (latestResult > latestSignoff || !signedOff) - && (Model.NumberOfSelfAssessedOptionalCompetencies >= Model.SelfAssessment.MinimumOptionalCompetencies) - ) - { - - Request @Model.SelfAssessment.SignOffRoleName sign-off - - } - } - else - { -

- All required @Model.SelfAssessment.Vocabulary.ToLower() self-assessments must be completed and confirmed, - before requesting @Model.SelfAssessment.SignOffRoleName sign off of the @Model.SelfAssessment.Name. -

- } -
+ } diff --git a/DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/_SupervisorSignOffPanel.cshtml b/DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/_SupervisorSignOffPanel.cshtml new file mode 100644 index 0000000000..1035780ee8 --- /dev/null +++ b/DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/_SupervisorSignOffPanel.cshtml @@ -0,0 +1,77 @@ +@model DigitalLearningSolutions.Web.ViewModels.LearningPortal.SelfAssessments.SelfAssessmentOverviewViewModel +@{ + var latestSignoff = Model.SupervisorSignOffs + .Select(s => s.Verified) + .DefaultIfEmpty(DateTime.MinValue) + .Max(); + var latestResult = Model.CompetencyGroups + .SelectMany(g => g.SelectMany(c => c.AssessmentQuestions)) + .Select(q => q.ResultDateTime) + .DefaultIfEmpty(DateTime.MinValue) + .Max(); + bool signedOff = (from record in Model.SupervisorSignOffs + orderby record.ID descending + select record.SignedOff).FirstOrDefault(); + var competencySummaries = from g in Model.CompetencyGroups + let questions = g.SelectMany(c => c.AssessmentQuestions).Where(q => q.Required) + let selfAssessedCount = questions.Count(q => q.Result.HasValue) + let verifiedCount = questions.Count(q => !((q.Result == null || q.Verified == null || q.SignedOff != true) && q.Required)) + select new ViewDataDictionary(ViewData) + { + { "isSupervisorResultsReviewed", Model.SelfAssessment.IsSupervisorResultsReviewed }, + { "questionsCount", questions.Count() }, + { "selfAssessedCount", selfAssessedCount }, + { "verifiedCount", verifiedCount } + }; +} +
+ +

@Model.SelfAssessment.SignOffRoleName Sign-off

+ (int)c["questionsCount"]) == competencySummaries.Sum(c => (int)c["verifiedCount"]) }, + { "IsOngoingSelfAssessment", latestResult > latestSignoff }})" /> + @if (Model.AllQuestionsVerifiedOrNotRequired) + { + @if (!Model.SupervisorSignOffs.Any()) + { +

You have not yet requested @Model.SelfAssessment.SignOffRoleName sign-off for this self assessment.

+ } + else if (!Model.SupervisorSignOffs.Where(x => x.Verified == null).Any() && latestResult > latestSignoff) + { +
+

+ + New self assessment results + New self assessment results + +

+

+ You have submitted new self assessment results since this self assessment was signed off. + Please resubmit your self assessment for sign off once these results are confirmed. +

+
+ } + @if (!Model.SupervisorSignOffs.Where(x => x.Verified == null).Any() + && (latestResult > latestSignoff || !signedOff) + && (Model.NumberOfSelfAssessedOptionalCompetencies >= Model.SelfAssessment.MinimumOptionalCompetencies) + ) + { + + Request @Model.SelfAssessment.SignOffRoleName sign-off + + } + } + else + { +

+ All required @Model.SelfAssessment.Vocabulary.ToLower() self-assessments must be completed and confirmed, + before requesting @Model.SelfAssessment.SignOffRoleName sign off of the @Model.SelfAssessment.Name. +

+ } +