Skip to content

Commit 4058fc2

Browse files
TD-4598 Sign off self-assessment appears when filters applied in Supervisor page though proficiencies are not completed
1 parent 9c8910d commit 4058fc2

File tree

6 files changed

+45
-121
lines changed

6 files changed

+45
-121
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace DigitalLearningSolutions.Data.Models.SelfAssessments
8+
{
9+
public class CompetencySummary
10+
{
11+
public int VerifiedCount { get; set; }
12+
public int QuestionsCount { get; set; }
13+
public bool CanViewCertificate { get; set; }
14+
}
15+
}

DigitalLearningSolutions.Web/Controllers/LearningPortalController/SelfAssessment.cs

Lines changed: 10 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -490,8 +490,8 @@ public IActionResult SelfAssessmentOverview(int selfAssessmentId, string vocabul
490490
{
491491
searchModel.IsSupervisorResultsReviewed = assessment.IsSupervisorResultsReviewed;
492492
}
493-
494-
ViewBag.CanViewCertificate = CertificateHelper.CanViewCertificate(recentResults, model.SupervisorSignOffs);
493+
var competencySummaries = CertificateHelper.CanViewCertificate(recentResults, supervisorSignOffs);
494+
ViewBag.CanViewCertificate = competencySummaries.CanViewCertificate;
495495
ViewBag.SupervisorSelfAssessmentReview = assessment.SupervisorSelfAssessmentReview;
496496
return View("SelfAssessments/SelfAssessmentOverview", model);
497497
}
@@ -1661,50 +1661,18 @@ public IActionResult CompetencySelfAssessmentCertificate(int CandidateAssessment
16611661
var delegateUserId = competencymaindata.LearnerId;
16621662
var recentResults = selfAssessmentService.GetMostRecentResults(competencymaindata.SelfAssessmentID, competencymaindata.LearnerDelegateAccountId).ToList();
16631663
var supervisorSignOffs = selfAssessmentService.GetSupervisorSignOffsForCandidateAssessment(competencymaindata.SelfAssessmentID, delegateUserId);
1664-
if (!CertificateHelper.CanViewCertificate(recentResults, supervisorSignOffs))
1664+
var competencySummaries = CertificateHelper.CanViewCertificate(recentResults, supervisorSignOffs);
1665+
if (!competencySummaries.CanViewCertificate)
16651666
{
16661667
return RedirectToAction("StatusCode", "LearningSolutions", new { code = 401 });
16671668
}
1668-
16691669
var competencycount = selfAssessmentService.GetCompetencyCountSelfAssessmentCertificate(competencymaindata.CandidateAssessmentID);
16701670
var accessors = selfAssessmentService.GetAccessor(competencymaindata.SelfAssessmentID, competencymaindata.LearnerId);
16711671
var assessment = selfAssessmentService.GetSelfAssessmentForCandidateById(delegateUserId, competencymaindata.SelfAssessmentID);
16721672
var competencyIds = recentResults.Select(c => c.Id).ToArray();
16731673
var competencyFlags = frameworkService.GetSelectedCompetencyFlagsByCompetecyIds(competencyIds);
1674-
var competencies = CompetencyFilterHelper.FilterCompetencies(recentResults, competencyFlags, null);
1675-
foreach (var competency in competencies)
1676-
{
1677-
competency.QuestionLabel = assessment.QuestionLabel;
1678-
foreach (var assessmentQuestion in competency.AssessmentQuestions)
1679-
{
1680-
if (assessmentQuestion.AssessmentQuestionInputTypeID != 2)
1681-
{
1682-
assessmentQuestion.LevelDescriptors = selfAssessmentService
1683-
.GetLevelDescriptorsForAssessmentQuestion(
1684-
assessmentQuestion.Id,
1685-
assessmentQuestion.MinValue,
1686-
assessmentQuestion.MaxValue,
1687-
assessmentQuestion.MinValue == 0
1688-
).ToList();
1689-
}
1690-
}
1691-
}
1692-
1693-
var CompetencyGroups = competencies.GroupBy(competency => competency.CompetencyGroup);
1694-
var competencySummaries = from g in CompetencyGroups
1695-
let questions = g.SelectMany(c => c.AssessmentQuestions).Where(q => q.Required)
1696-
let selfAssessedCount = questions.Count(q => q.Result.HasValue)
1697-
let verifiedCount = questions.Count(q => !((q.Result == null || q.Verified == null || q.SignedOff != true) && q.Required))
1698-
1699-
select new
1700-
{
1701-
SelfAssessedCount = selfAssessedCount,
1702-
VerifiedCount = verifiedCount,
1703-
Questions = questions.Count()
1704-
};
1705-
1706-
int sumVerifiedCount = competencySummaries.Sum(item => item.VerifiedCount);
1707-
int sumQuestions = competencySummaries.Sum(item => item.Questions);
1674+
int sumVerifiedCount = competencySummaries.VerifiedCount;
1675+
int sumQuestions = competencySummaries.QuestionsCount;
17081676
var activitySummaryCompetencySelfAssesment = selfAssessmentService.GetActivitySummaryCompetencySelfAssesment(competencymaindata.Id);
17091677
var model = new CompetencySelfAssessmentCertificateViewModel(competencymaindata, competencycount, vocabulary, accessors, activitySummaryCompetencySelfAssesment, sumQuestions, sumVerifiedCount, supervisorDelegateId);
17101678
return View("SelfAssessments/CompetencySelfAssessmentCertificate", model);
@@ -1743,42 +1711,13 @@ public async Task<IActionResult> DownloadCertificate(int candidateAssessmentId,
17431711
var competencyFlags = frameworkService.GetSelectedCompetencyFlagsByCompetecyIds(competencyIds);
17441712
var competencies = CompetencyFilterHelper.FilterCompetencies(recentResults, competencyFlags, null);
17451713
var supervisorSignOffs = selfAssessmentService.GetSupervisorSignOffsForCandidateAssessment(competencymaindata.SelfAssessmentID, delegateUserId);
1746-
if (!CertificateHelper.CanViewCertificate(recentResults, supervisorSignOffs))
1714+
var competencySummaries = CertificateHelper.CanViewCertificate(recentResults, supervisorSignOffs);
1715+
if (!competencySummaries.CanViewCertificate)
17471716
{
17481717
return RedirectToAction("StatusCode", "LearningSolutions", new { code = 401 });
17491718
}
1750-
foreach (var competency in competencies)
1751-
{
1752-
competency.QuestionLabel = assessment.QuestionLabel;
1753-
foreach (var assessmentQuestion in competency.AssessmentQuestions)
1754-
{
1755-
if (assessmentQuestion.AssessmentQuestionInputTypeID != 2)
1756-
{
1757-
assessmentQuestion.LevelDescriptors = selfAssessmentService
1758-
.GetLevelDescriptorsForAssessmentQuestion(
1759-
assessmentQuestion.Id,
1760-
assessmentQuestion.MinValue,
1761-
assessmentQuestion.MaxValue,
1762-
assessmentQuestion.MinValue == 0
1763-
).ToList();
1764-
}
1765-
}
1766-
}
1767-
1768-
var CompetencyGroups = competencies.GroupBy(competency => competency.CompetencyGroup);
1769-
var competencySummaries = from g in CompetencyGroups
1770-
let questions = g.SelectMany(c => c.AssessmentQuestions).Where(q => q.Required)
1771-
let selfAssessedCount = questions.Count(q => q.Result.HasValue)
1772-
let verifiedCount = questions.Count(q => !((q.Result == null || q.Verified == null || q.SignedOff != true) && q.Required))
1773-
select new
1774-
{
1775-
SelfAssessedCount = selfAssessedCount,
1776-
VerifiedCount = verifiedCount,
1777-
Questions = questions.Count()
1778-
};
1779-
1780-
int sumVerifiedCount = competencySummaries.Sum(item => item.VerifiedCount);
1781-
int sumQuestions = competencySummaries.Sum(item => item.Questions);
1719+
int sumVerifiedCount = competencySummaries.VerifiedCount;
1720+
int sumQuestions = competencySummaries.QuestionsCount;
17821721
var model = new CompetencySelfAssessmentCertificateViewModel(competencymaindata, competencycount, "Proficiencies", accessors, activitySummaryCompetencySelfAssesment, sumQuestions, sumVerifiedCount, null);
17831722
var renderedViewHTML = RenderRazorViewToString(this, "SelfAssessments/DownloadCompetencySelfAssessmentCertificate", model);
17841723

DigitalLearningSolutions.Web/Controllers/SupervisorController/Supervisor.cs

Lines changed: 6 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -384,8 +384,8 @@ public IActionResult ReviewDelegateSelfAssessment(int supervisorDelegateId, int
384384
(int)superviseDelegate.DelegateUserID
385385
);
386386
}
387-
388-
ViewBag.CanViewCertificate = CertificateHelper.CanViewCertificate(reviewedCompetencies, model.SupervisorSignOffs);
387+
var competencySummaries = CertificateHelper.CanViewCertificate(reviewedCompetencies, model.SupervisorSignOffs);
388+
model.CompetencySummaries = competencySummaries;
389389
ViewBag.SupervisorSelfAssessmentReview = delegateSelfAssessment.SupervisorSelfAssessmentReview;
390390
ViewBag.navigatedFrom = selfAssessmentResultId == null;
391391
TempData["CertificateSupervisorDelegateId"] = supervisorDelegateId;
@@ -1385,7 +1385,8 @@ public IActionResult CompetencySelfAssessmentCertificatesupervisor(int candidate
13851385
var delegateUserId = competencymaindata.LearnerId;
13861386
var recentResults = selfAssessmentService.GetMostRecentResults(competencymaindata.SelfAssessmentID, competencymaindata.LearnerDelegateAccountId).ToList();
13871387
var supervisorSignOffs = selfAssessmentService.GetSupervisorSignOffsForCandidateAssessment(competencymaindata.SelfAssessmentID, delegateUserId);
1388-
if (!CertificateHelper.CanViewCertificate(recentResults, supervisorSignOffs))
1388+
var competencySummaries = CertificateHelper.CanViewCertificate(recentResults, supervisorSignOffs);
1389+
if (!competencySummaries.CanViewCertificate)
13891390
{
13901391
return RedirectToAction("StatusCode", "LearningSolutions", new { code = 401 });
13911392
}
@@ -1394,41 +1395,8 @@ public IActionResult CompetencySelfAssessmentCertificatesupervisor(int candidate
13941395
var accessors = selfAssessmentService.GetAccessor(competencymaindata.SelfAssessmentID, competencymaindata.LearnerId);
13951396
var assessment = selfAssessmentService.GetSelfAssessmentForCandidateById(delegateUserId, competencymaindata.SelfAssessmentID);
13961397
var competencyIds = recentResults.Select(c => c.Id).ToArray();
1397-
var competencyFlags = frameworkService.GetSelectedCompetencyFlagsByCompetecyIds(competencyIds);
1398-
var competencies = CompetencyFilterHelper.FilterCompetencies(recentResults, competencyFlags, null);
1399-
foreach (var competency in competencies)
1400-
{
1401-
competency.QuestionLabel = assessment.QuestionLabel;
1402-
foreach (var assessmentQuestion in competency.AssessmentQuestions)
1403-
{
1404-
if (assessmentQuestion.AssessmentQuestionInputTypeID != 2)
1405-
{
1406-
assessmentQuestion.LevelDescriptors = selfAssessmentService
1407-
.GetLevelDescriptorsForAssessmentQuestion(
1408-
assessmentQuestion.Id,
1409-
assessmentQuestion.MinValue,
1410-
assessmentQuestion.MaxValue,
1411-
assessmentQuestion.MinValue == 0
1412-
).ToList();
1413-
}
1414-
}
1415-
}
1416-
1417-
var CompetencyGroups = competencies.GroupBy(competency => competency.CompetencyGroup);
1418-
var competencySummaries = from g in CompetencyGroups
1419-
let questions = g.SelectMany(c => c.AssessmentQuestions).Where(q => q.Required)
1420-
let selfAssessedCount = questions.Count(q => q.Result.HasValue)
1421-
let verifiedCount = questions.Count(q => !((q.Result == null || q.Verified == null || q.SignedOff != true) && q.Required))
1422-
1423-
select new
1424-
{
1425-
SelfAssessedCount = selfAssessedCount,
1426-
VerifiedCount = verifiedCount,
1427-
Questions = questions.Count()
1428-
};
1429-
1430-
int sumVerifiedCount = competencySummaries.Sum(item => item.VerifiedCount);
1431-
int sumQuestions = competencySummaries.Sum(item => item.Questions);
1398+
int sumVerifiedCount = competencySummaries.VerifiedCount;
1399+
int sumQuestions = competencySummaries.QuestionsCount;
14321400
var activitySummaryCompetencySelfAssesment = selfAssessmentService.GetActivitySummaryCompetencySelfAssesment(competencymaindata.Id);
14331401
var model = new ViewModels.LearningPortal.SelfAssessments.CompetencySelfAssessmentCertificateViewModel(competencymaindata, competencycount, "ProfileAssessment", accessors, activitySummaryCompetencySelfAssesment, sumQuestions, sumVerifiedCount, supervisorDelegateId);
14341402
return View("SelfAssessments/CompetencySelfAssessmentCertificate", model);

DigitalLearningSolutions.Web/Helpers/CertificateHelper.cs

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,9 @@ namespace DigitalLearningSolutions.Web.Helpers
1010
{
1111
public class CertificateHelper
1212
{
13-
public static bool CanViewCertificate(List<Competency> reviewedCompetencies, IEnumerable<SupervisorSignOff>? SupervisorSignOffs)
13+
public static CompetencySummary CanViewCertificate(List<Competency> reviewedCompetencies, IEnumerable<SupervisorSignOff>? SupervisorSignOffs)
1414
{
15-
1615
var CompetencyGroups = reviewedCompetencies.GroupBy(competency => competency.CompetencyGroup);
17-
1816
var competencySummaries = CompetencyGroups.Select(g =>
1917
{
2018
var questions = g.SelectMany(c => c.AssessmentQuestions).Where(q => q.Required);
@@ -38,9 +36,15 @@ public static bool CanViewCertificate(List<Competency> reviewedCompetencies, IEn
3836

3937
var allComptConfirmed = competencySummaries.Count() == 0 ? false : competencySummaries.Sum(c => c.VerifiedCount) == competencySummaries.Sum(c => c.QuestionsCount);
4038

41-
return SupervisorSignOffs?.FirstOrDefault()?.Verified != null &&
42-
SupervisorSignOffs.FirstOrDefault().SignedOff &&
43-
allComptConfirmed && latestResult <= latestSignoff;
39+
var model = new CompetencySummary()
40+
{
41+
VerifiedCount = competencySummaries.Sum(item => item.VerifiedCount),
42+
QuestionsCount = competencySummaries.Sum(item => item.QuestionsCount),
43+
CanViewCertificate = SupervisorSignOffs?.FirstOrDefault()?.Verified != null &&
44+
SupervisorSignOffs.FirstOrDefault().SignedOff &&
45+
allComptConfirmed && latestResult <= latestSignoff
46+
};
47+
return model;
4448
}
4549
}
4650
}

DigitalLearningSolutions.Web/ViewModels/Supervisor/ReviewSelfAssessmentViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,6 @@ public string VocabPlural(string vocabulary)
2121
}
2222
public int CandidateAssessmentId { get; set; }
2323
public bool ExportToExcelHide { get; set; }
24+
public CompetencySummary CompetencySummaries { get; set; }
2425
}
2526
}

DigitalLearningSolutions.Web/Views/Supervisor/ReviewSelfAssessment.cshtml

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
</a>
9797
}
9898

99-
@if (ViewBag.CanViewCertificate)
99+
@if(Model.CompetencySummaries.CanViewCertificate)
100100
{
101101
<a class="nhsuk-button"
102102
asp-route-candidateAssessmentId="@Model.CandidateAssessmentId"
@@ -106,14 +106,11 @@
106106
Certificate
107107
</a>
108108
}
109-
@if (
110-
Model.DelegateSelfAssessment.SignOffRequested > 0 &&
111-
competencySummaries.Sum(c => (int)c["verifiedCount"]) == competencySummaries.Sum(c => (int)c["questionsCount"])
112-
)
109+
@if(Model.DelegateSelfAssessment.SignOffRequested > 0 && Model.CompetencySummaries.VerifiedCount == Model.CompetencySummaries.QuestionsCount)
113110
{
114111
<a role="button" asp-action="SignOffProfileAssessment" asp-route-candidateAssessmentId="@Model.DelegateSelfAssessment.ID" asp-route-supervisorDelegateId="@Model.SupervisorDelegateDetail.ID" class="nhsuk-button">Sign-off self assessment</a>
115112
}
116-
@if ((Model.DelegateSelfAssessment.ResultsVerificationRequests > 1) && (competencySummaries.Sum(c => (int)c["verifiedCount"]) < competencySummaries.Sum(c => (int)c["questionsCount"])))
113+
@if((Model.DelegateSelfAssessment.ResultsVerificationRequests > 1) && Model.CompetencySummaries.VerifiedCount < Model.CompetencySummaries.QuestionsCount)
117114
{
118115
<a role="button" asp-action="VerifyMultipleResults" asp-route-candidateAssessmentId="@Model.DelegateSelfAssessment.ID" asp-route-supervisorDelegateId="@Model.SupervisorDelegateDetail.ID" class="nhsuk-button">Confirm multiple results</a>
119116
}

0 commit comments

Comments
 (0)