Skip to content

Commit f8da95d

Browse files
TD-4429 Additional optional competencies checkbox on the supervisor sign off screen
1 parent 9de2f37 commit f8da95d

File tree

5 files changed

+36
-13
lines changed

5 files changed

+36
-13
lines changed

DigitalLearningSolutions.Data/DataServices/SupervisorDataService.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ LEFT JOIN UserCentreDetails ucd
238238
AND da.CentreID = @centreId", new { delegateEmail, centreId });
239239
}
240240

241-
int existingId = (int)connection.ExecuteScalar(
241+
int existingId = Convert.ToInt32(connection.ExecuteScalar(
242242
@"
243243
SELECT COALESCE
244244
((SELECT Top 1 ID
@@ -253,7 +253,7 @@ FROM SupervisorDelegates sd
253253
supervisorAdminId = supervisorAdminId ?? 0,
254254
delegateUserId = delegateUserId ?? 0
255255
}
256-
);
256+
));
257257

258258
if (existingId > 0)
259259
{
@@ -285,7 +285,7 @@ FROM SupervisorDelegates sd
285285
return -1;
286286
}
287287

288-
existingId = (int)connection.ExecuteScalar(
288+
existingId = Convert.ToInt32(connection.ExecuteScalar(
289289
@"
290290
SELECT COALESCE
291291
((SELECT ID
@@ -302,7 +302,7 @@ FROM SupervisorDelegates sd
302302
supervisorAdminId = supervisorAdminId ?? 0,
303303
delegateUserId = delegateUserId ?? 0
304304
}
305-
); return existingId;
305+
)); return existingId;
306306
}
307307
}
308308

@@ -794,23 +794,23 @@ FROM CandidateAssessments
794794
}
795795
public int InsertCandidateAssessmentSupervisor(int delegateUserId, int supervisorDelegateId, int selfAssessmentId, int? selfAssessmentSupervisorRoleId)
796796
{
797-
int candidateAssessmentId = (int)connection.ExecuteScalar(
797+
int candidateAssessmentId = Convert.ToInt32(connection.ExecuteScalar(
798798
@"SELECT COALESCE
799799
((SELECT ID
800800
FROM CandidateAssessments
801801
WHERE (SelfAssessmentID = @selfAssessmentId) AND (DelegateUserID = @delegateUserId) AND (RemovedDate IS NULL) AND (CompletedDate IS NULL)), 0) AS CandidateAssessmentID",
802-
new { selfAssessmentId, delegateUserId });
802+
new { selfAssessmentId, delegateUserId }));
803803
if (candidateAssessmentId > 0)
804804
{
805-
var candidateAssessmentSupervisorsId = (int)connection.ExecuteScalar(
805+
var candidateAssessmentSupervisorsId = Convert.ToInt32(connection.ExecuteScalar(
806806
@"
807807
SELECT COALESCE
808808
((SELECT ID
809809
FROM CandidateAssessmentSupervisors
810810
WHERE (CandidateAssessmentID = @candidateAssessmentId)
811811
AND (SupervisorDelegateId = @supervisorDelegateId)
812812
AND ((SelfAssessmentSupervisorRoleID IS NULL) OR (SelfAssessmentSupervisorRoleID = @selfAssessmentSupervisorRoleId))), 0) AS CandidateAssessmentSupervisorID", new
813-
{ candidateAssessmentId, supervisorDelegateId, selfAssessmentSupervisorRoleId });
813+
{ candidateAssessmentId, supervisorDelegateId, selfAssessmentSupervisorRoleId }));
814814

815815
if (candidateAssessmentSupervisorsId == 0)
816816
{
@@ -1067,7 +1067,7 @@ SelfAssessmentStructure AS sas1 INNER JOIN
10671067
(ca1.ID = ca.ID) AND (caoc1.IncludedInSelfAssessment = 1) AND (NOT (sar1.Result IS NULL)) AND (sasrv.SignedOff = 1) AND (caqrr1.LevelRAG = 3) OR
10681068
(ca1.ID = ca.ID) AND (sas1.Optional = 0) AND (NOT (sar1.SupportingComments IS NULL)) AND (sasrv.SignedOff = 1) AND (caqrr1.LevelRAG = 3) OR
10691069
(ca1.ID = ca.ID) AND (caoc1.IncludedInSelfAssessment = 1) AND (NOT (sar1.SupportingComments IS NULL)) AND (sasrv.SignedOff = 1) AND (caqrr1.LevelRAG = 3)) AS MeetingCount,
1070-
sa.SignOffSupervisorStatement
1070+
sa.SignOffSupervisorStatement,sa.MinimumOptionalCompetencies,ca.DelegateUserID
10711071
FROM NRPProfessionalGroups AS npg RIGHT OUTER JOIN
10721072
NRPSubGroups AS nsg RIGHT OUTER JOIN
10731073
SelfAssessmentSupervisorRoles AS sasr RIGHT OUTER JOIN

DigitalLearningSolutions.Data/Models/Supervisor/DelegateSelfAssessment.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,6 @@ public class DelegateSelfAssessment
2828
public bool IsSupervisorResultsReviewed { get; set; }
2929
public bool IsAssignedToSupervisor { get; set; }
3030
public bool NonReportable { get; set; }
31+
public int MinimumOptionalCompetencies { get; set; }
3132
}
3233
}

DigitalLearningSolutions.Web/Controllers/SupervisorController/Supervisor.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,13 +1167,15 @@ public IActionResult SignOffProfileAssessment(int supervisorDelegateId, int cand
11671167
supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminId(), 0);
11681168
IEnumerable<CandidateAssessmentSupervisorVerificationSummary>? verificationsSummary =
11691169
supervisorService.GetCandidateAssessmentSupervisorVerificationSummaries(candidateAssessmentId);
1170+
var optionalCompetencies = selfAssessmentService.GetCandidateAssessmentOptionalCompetencies(selfAssessmentSummary.SelfAssessmentID, selfAssessmentSummary.DelegateUserID);
11701171
SignOffProfileAssessmentViewModel? model = new SignOffProfileAssessmentViewModel()
11711172
{
11721173
SelfAssessmentResultSummary = selfAssessmentSummary,
11731174
SupervisorDelegate = supervisorDelegate,
11741175
CandidateAssessmentSupervisorVerificationId =
11751176
selfAssessmentSummary?.CandidateAssessmentSupervisorVerificationId,
1176-
CandidateAssessmentSupervisorVerificationSummaries = verificationsSummary
1177+
CandidateAssessmentSupervisorVerificationSummaries = verificationsSummary,
1178+
NumberOfSelfAssessedOptionalCompetencies = optionalCompetencies.Count(x => x.IncludedInSelfAssessment)
11771179
};
11781180
return View("SignOffProfileAssessment", model);
11791181
}
@@ -1194,13 +1196,15 @@ SignOffProfileAssessmentViewModel model
11941196
supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminId(), 0);
11951197
IEnumerable<CandidateAssessmentSupervisorVerificationSummary>? verificationsSummary =
11961198
supervisorService.GetCandidateAssessmentSupervisorVerificationSummaries(candidateAssessmentId);
1199+
var optionalCompetencies = selfAssessmentService.GetCandidateAssessmentOptionalCompetencies(selfAssessmentSummary.SelfAssessmentID, selfAssessmentSummary.DelegateUserID);
11971200
SignOffProfileAssessmentViewModel? newModel = new SignOffProfileAssessmentViewModel()
11981201
{
11991202
SelfAssessmentResultSummary = selfAssessmentSummary,
12001203
SupervisorDelegate = supervisorDelegate,
12011204
CandidateAssessmentSupervisorVerificationId =
12021205
selfAssessmentSummary.CandidateAssessmentSupervisorVerificationId,
1203-
CandidateAssessmentSupervisorVerificationSummaries = verificationsSummary
1206+
CandidateAssessmentSupervisorVerificationSummaries = verificationsSummary,
1207+
NumberOfSelfAssessedOptionalCompetencies = optionalCompetencies.Count(x => x.IncludedInSelfAssessment)
12041208
};
12051209
return View("SignOffProfileAssessment", newModel);
12061210
}

DigitalLearningSolutions.Web/ViewModels/Supervisor/SignOffProfileAssessmentViewModel.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,9 @@ public class SignOffProfileAssessmentViewModel
1717
[RequiredWhen("SignedOff", false, AllowEmptyStrings = false, ErrorMessage = "Comments are required when rejecting a self assessment (when Sign-off is unchecked).")]
1818
public string? SupervisorComments { get; set; }
1919
public bool SignedOff { get; set; }
20+
[Required]
21+
[Range(1, 1, ErrorMessage = "Please tick to confirm that you have reviewed the optional competencies included in this self assessment and they are appropriate to the learner’s role.")]
22+
public bool OptionalCompetenciesChecked { get; set; }
23+
public int NumberOfSelfAssessedOptionalCompetencies { get; set; }
2024
}
2125
}

DigitalLearningSolutions.Web/Views/Supervisor/SignOffProfileAssessment.cshtml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@
5555
</p>
5656
</nav>
5757
}
58-
58+
@if (errorHasOccurred)
59+
{
60+
<vc:error-summary order-of-property-names="@(new[] {nameof(Model.OptionalCompetenciesChecked) })" />
61+
}
5962
<details class="nhsuk-details nhsuk-expander">
6063
<summary class="nhsuk-details__summary">
6164
<h1 class="nhsuk-details__summary-text nhsuk-u-margin-bottom-0">
@@ -201,7 +204,18 @@
201204
<span asp-validation-for="SignedOff" class="text-danger"></span>
202205
</div>
203206
</nhs-form-group>
204-
</fieldset>
207+
@if (Model.NumberOfSelfAssessedOptionalCompetencies >= Model.SelfAssessmentResultSummary.MinimumOptionalCompetencies)
208+
{
209+
<nhs-form-group nhs-validation-for="OptionalCompetenciesChecked">
210+
<div class="nhsuk-checkboxes__item">
211+
<input class="nhsuk-checkboxes__input" id="optional-competencies" name="OptionalCompetenciesChecked" asp-for="OptionalCompetenciesChecked" type="checkbox">
212+
<label class="nhsuk-label nhsuk-checkboxes__label" for="optional-competencies">
213+
I have reviewed the optional competencies included in this self assessment and confirm them to be appropriate to the learners role.
214+
</label>
215+
</div>
216+
</nhs-form-group>
217+
}
218+
</fieldset>
205219
<button class="nhsuk-button nhsuk-u-margin-bottom-0" type="submit">
206220
Submit
207221
</button>

0 commit comments

Comments
 (0)