Skip to content

Commit f850ae1

Browse files
authored
Merge pull request #2555 from TechnologyEnhancedLearning/Develop/Fix/TD-149-Certificate-button-show-hide
TD-149-Show/hide certificate button
2 parents 4522886 + e1cdf40 commit f850ae1

File tree

6 files changed

+100
-58
lines changed

6 files changed

+100
-58
lines changed

DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CandidateAssessmentsDataService.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,8 @@ from CandidateAssessmentSupervisorVerifications AS casv INNER JOIN
393393
CandidateAssessments AS ca ON cas.CandidateAssessmentID = ca.ID INNER JOIN
394394
Centres AS ce ON ca.CentreID = ce.CentreID
395395
where (ca.ID=@candidateAssessmentID) AND (casv.SignedOff = 1)
396-
AND (NOT (casv.Verified IS NULL))) Supervisor ON LearnerDetails.Id =Supervisor.Id",
396+
AND (NOT (casv.Verified IS NULL))) Supervisor ON LearnerDetails.Id =Supervisor.Id
397+
ORDER BY Verified DESC",
397398
new { candidateAssessmentID }
398399
);
399400
}

DigitalLearningSolutions.Web/Views/LearningPortal/Current/CompetencySelfAssessmentCertificate.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@
161161

162162
<div class="footer">
163163
<div class="text">
164-
<p class="blue">Certificate generated on @Model.CompetencySelfAssessmentCertificates.Verified.ToString("dd/MM/yyyy")</p>
164+
<p class="blue">Certificate generated on @DateTime.Now.ToString("dd/MM/yyyy")</p>
165165
<p>By NHS England Digital Learning Solutions <br /> on behalf of @Model.CompetencySelfAssessmentCertificates.CentreName</p>
166166
</div>
167167
<div class="footer-logo">

DigitalLearningSolutions.Web/Views/LearningPortal/Current/DownloadCompetencySelfAssessmentCertificate.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,7 @@
470470

471471
<div class="footer">
472472
<div class="text">
473-
<p class="blue">Certificate generated on @Model.CompetencySelfAssessmentCertificates.Verified.ToString("dd/MM/yyyy")</p>
473+
<p class="blue">Certificate generated on @DateTime.Now.ToString("dd/MM/yyyy")</p>
474474
<p>By NHS England Digital Learning Solutions <br /> on behalf of @Model.CompetencySelfAssessmentCertificates.CentreName</p>
475475
</div>
476476
<div class="footer-logo">
Lines changed: 56 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,68 @@
11
@using DigitalLearningSolutions.Web.ViewModels.LearningPortal.SelfAssessments
22
@using DigitalLearningSolutions.Web.Helpers
33
@model SelfAssessmentOverviewViewModel
4+
@{
5+
var latestSignoff = Model.SupervisorSignOffs
6+
.Select(s => s.Verified)
7+
.DefaultIfEmpty(DateTime.MinValue)
8+
.Max();
9+
var latestResult = Model.CompetencyGroups
10+
.SelectMany(g => g.SelectMany(c => c.AssessmentQuestions))
11+
.Select(q => q.ResultDateTime)
12+
.DefaultIfEmpty(DateTime.MinValue)
13+
.Max();
14+
15+
var competencySummaries = from g in Model.CompetencyGroups
16+
let questions = g.SelectMany(c => c.AssessmentQuestions).Where(q => q.Required)
17+
let selfAssessedCount = questions.Count(q => q.Result.HasValue)
18+
let verifiedCount = questions.Count(q => !((q.Result == null || q.Verified == null || q.SignedOff != true) && q.Required))
19+
select new ViewDataDictionary(ViewData)
20+
{
21+
22+
{ "questionsCount", questions.Count() },
23+
{ "selfAssessedCount", selfAssessedCount },
24+
{ "verifiedCount", verifiedCount }
25+
};
26+
var allComptConfirmed = competencySummaries.Sum(c => (int)c["verifiedCount"]) == competencySummaries.Sum(c => (int)c["questionsCount"]);
27+
}
28+
429
@if (Model.NumberOfOptionalCompetencies > 0)
530
{
6-
<a class="nhsuk-button nhsuk-button--secondary trigger-loader"
7-
asp-route-selfAssessmentId="@Model.SelfAssessment.Id"
8-
asp-route-vocabulary="@Model.VocabPlural()"
9-
asp-action="ManageOptionalCompetencies"
10-
role="button">
11-
Manage optional @Model.VocabPlural().ToLower()
12-
</a>
31+
<a class="nhsuk-button nhsuk-button--secondary trigger-loader"
32+
asp-route-selfAssessmentId="@Model.SelfAssessment.Id"
33+
asp-route-vocabulary="@Model.VocabPlural()"
34+
asp-action="ManageOptionalCompetencies"
35+
role="button">
36+
Manage optional @Model.VocabPlural().ToLower()
37+
</a>
1338
}
1439
@if (Model.SelfAssessment.IsSupervisorResultsReviewed)
1540
{
16-
<a class="nhsuk-button nhsuk-button--secondary trigger-loader"
17-
asp-route-selfAssessmentId="@Model.SelfAssessment.Id"
18-
asp-action="ReviewConfirmationRequests"
19-
role="button">
20-
Manage confirmation requests
21-
</a>
41+
<a class="nhsuk-button nhsuk-button--secondary trigger-loader"
42+
asp-route-selfAssessmentId="@Model.SelfAssessment.Id"
43+
asp-action="ReviewConfirmationRequests"
44+
role="button">
45+
Manage confirmation requests
46+
</a>
2247
}
2348
<feature name="@(FeatureFlags.CandidateAssessmentExcelExport)">
24-
<a class="nhsuk-button nhsuk-button--secondary"
25-
asp-route-candidateAssessmentId="@Model.SelfAssessment.CandidateAssessmentId"
26-
asp-route-candidateAssessmentName="@Model.SelfAssessment.Name"
49+
<a class="nhsuk-button nhsuk-button--secondary"
50+
asp-route-candidateAssessmentId="@Model.SelfAssessment.CandidateAssessmentId"
51+
asp-route-candidateAssessmentName="@Model.SelfAssessment.Name"
2752
asp-route-delegateName="@Model.SelfAssessment.DelegateName"
28-
asp-action="ExportCandidateAssessment"
29-
role="button">
30-
Export to Excel
31-
</a>
53+
asp-action="ExportCandidateAssessment"
54+
role="button">
55+
Export to Excel
56+
</a>
3257
</feature>
33-
@if (Model.SupervisorSignOffs.Where(x=> x.Verified != null && x.SignedOff).Any())
34-
{
35-
<a class="nhsuk-button "
36-
asp-route-candidateAssessmentId="@Model.SelfAssessment.CandidateAssessmentId"
37-
asp-route-route="2"
38-
asp-action="CompetencySelfAssessmentCertificate"
39-
role="button">
40-
Certificate
41-
</a>
42-
}
58+
@if (Model?.SupervisorSignOffs?.FirstOrDefault()?.Verified != null &&
59+
Model.SupervisorSignOffs.FirstOrDefault().SignedOff && allComptConfirmed && latestResult <= latestSignoff)
60+
{
61+
<a class="nhsuk-button "
62+
asp-route-candidateAssessmentId="@Model.SelfAssessment.CandidateAssessmentId"
63+
asp-route-route="2"
64+
asp-action="CompetencySelfAssessmentCertificate"
65+
role="button">
66+
Certificate
67+
</a>
68+
}

DigitalLearningSolutions.Web/Views/LearningPortal/SelfAssessments/_SelfAssessmentCard.cshtml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,17 @@
5252
Remove
5353
</a>
5454
}
55-
@if (Model.Verified != null && Model.SignedOff)
55+
@* @if (Model.Verified != null && Model.SignedOff)
5656
{
57-
<a class="nhsuk-button nhsuk-button--secondary"
58-
aria-describedby="@Model.CandidateAssessmentId-name-sa"
59-
asp-action="CompetencySelfAssessmentCertificate"
60-
asp-route-candidateAssessmentId="@Model.CandidateAssessmentId"
61-
asp-route-route="1"
62-
role="button">
63-
Certificate
57+
<a class="nhsuk-button nhsuk-button--secondary"
58+
aria-describedby="@Model.CandidateAssessmentId-name-sa"
59+
asp-action="CompetencySelfAssessmentCertificate"
60+
asp-route-candidateAssessmentId="@Model.CandidateAssessmentId"
61+
asp-route-route="1"
62+
role="button">
63+
Certificate
6464
</a>
65-
}
65+
} *@
6666
</div>
6767
</div>
6868
</div>

DigitalLearningSolutions.Web/Views/Supervisor/ReviewSelfAssessment.cshtml

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,29 @@
44
ViewData["Title"] = "Review Profile Assessment";
55
ViewData["Application"] = "Supervisor";
66
ViewData["HeaderPathName"] = "Supervisor";
7+
8+
var latestSignoff = Model.SupervisorSignOffs
9+
.Select(s => s.Verified)
10+
.DefaultIfEmpty(DateTime.MinValue)
11+
.Max();
12+
var latestResult = Model.CompetencyGroups
13+
.SelectMany(g => g.SelectMany(c => c.AssessmentQuestions))
14+
.Select(q => q.ResultDateTime)
15+
.DefaultIfEmpty(DateTime.MinValue)
16+
.Max();
17+
718
var competencySummaries = from g in Model.CompetencyGroups
819
let questions = g.SelectMany(c => c.AssessmentQuestions).Where(q => q.Required)
920
let selfAssessedCount = questions.Count(q => q.Result.HasValue)
1021
let verifiedCount = questions.Count(q => !((q.Result == null || q.Verified == null || q.SignedOff != true) && q.Required))
1122
select new ViewDataDictionary(ViewData)
12-
{
23+
{
1324

14-
{ "questionsCount", questions.Count() },
15-
{ "selfAssessedCount", selfAssessedCount },
16-
{ "verifiedCount", verifiedCount }
17-
};
25+
{ "questionsCount", questions.Count() },
26+
{ "selfAssessedCount", selfAssessedCount },
27+
{ "verifiedCount", verifiedCount }
28+
};
29+
var allComptConfirmed = competencySummaries.Sum(c => (int)c["verifiedCount"]) == competencySummaries.Sum(c => (int)c["questionsCount"]);
1830
}
1931
<link rel="stylesheet" href="@Url.Content("~/css/frameworks/frameworksShared.css")" asp-append-version="true">
2032
<link rel="stylesheet" href="@Url.Content("~/css/shared/searchableElements/searchableElements.css")" asp-append-version="true">
@@ -95,17 +107,20 @@
95107
</a>
96108
}
97109

98-
@if (Model.SupervisorSignOffs.Where(x => x.Verified != null && x.SignedOff).Any() && Model.DelegateSelfAssessment.ResultsVerificationRequests ==0)
99-
{
100-
101-
<a class="nhsuk-button"
102-
asp-controller="LearningPortal"
103-
asp-route-candidateAssessmentId="@Model.CandidateAssessmentId"
104-
asp-action="CompetencySelfAssessmentCertificate"
105-
asp-route-route="3"
106-
role="button">
107-
Certificate
108-
</a>
110+
@if (Model?.SupervisorSignOffs?.FirstOrDefault()?.Verified != null &&
111+
Model.SupervisorSignOffs.FirstOrDefault().SignedOff &&
112+
Model?.DelegateSelfAssessment?.ResultsVerificationRequests == 0 && allComptConfirmed && latestResult <= latestSignoff
113+
)
114+
{
115+
116+
<a class="nhsuk-button"
117+
asp-controller="LearningPortal"
118+
asp-route-candidateAssessmentId="@Model.CandidateAssessmentId"
119+
asp-action="CompetencySelfAssessmentCertificate"
120+
asp-route-route="3"
121+
role="button">
122+
Certificate
123+
</a>
109124
}
110125
@if (
111126
Model.DelegateSelfAssessment.SignOffRequested > 0 &&

0 commit comments

Comments
 (0)