Skip to content

Commit d8dc53e

Browse files
authored
Merge pull request #3030 from TechnologyEnhancedLearning/DLS-Release-v1.1.0
Dls release v1.1.0 to UAT
2 parents 9280495 + b0f7863 commit d8dc53e

File tree

8 files changed

+107
-20
lines changed

8 files changed

+107
-20
lines changed

DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/CandidateAssessmentsDataService.cs

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,85 @@
88

99
public partial class SelfAssessmentDataService
1010
{
11+
public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId, int? adminIdCategoryID)
12+
{
13+
return connection.Query<CurrentSelfAssessment>(
14+
@"SELECT SelfAssessment.Id,
15+
SelfAssessment.Name,
16+
SelfAssessment.Description,
17+
SelfAssessment.IncludesSignposting,
18+
SelfAssessment.IncludeRequirementsFilters,
19+
SelfAssessment. IsSupervisorResultsReviewed,
20+
SelfAssessment.ReviewerCommentsLabel,
21+
SelfAssessment. Vocabulary,
22+
SelfAssessment. NumberOfCompetencies,
23+
SelfAssessment.StartedDate,
24+
SelfAssessment.LastAccessed,
25+
SelfAssessment.CompleteByDate,
26+
SelfAssessment.CandidateAssessmentId,
27+
SelfAssessment.UserBookmark,
28+
SelfAssessment.UnprocessedUpdates,
29+
SelfAssessment.LaunchCount,
30+
SelfAssessment. IsSelfAssessment,
31+
SelfAssessment.SubmittedDate,
32+
SelfAssessment. CentreName,
33+
SelfAssessment.EnrolmentMethodId,
34+
Signoff.SignedOff,
35+
Signoff.Verified,
36+
EnrolledByForename +' '+EnrolledBySurname AS EnrolledByFullName
37+
FROM (SELECT
38+
CA.SelfAssessmentID AS Id,
39+
SA.Name,
40+
SA.Description,
41+
SA.IncludesSignposting,
42+
SA.IncludeRequirementsFilters,
43+
SA.SupervisorResultsReview AS IsSupervisorResultsReviewed,
44+
SA.ReviewerCommentsLabel,
45+
COALESCE(SA.Vocabulary, 'Capability') AS Vocabulary,
46+
COUNT(C.ID) AS NumberOfCompetencies,
47+
CA.StartedDate,
48+
CA.LastAccessed,
49+
CA.CompleteByDate,
50+
CA.ID AS CandidateAssessmentId,
51+
CA.UserBookmark,
52+
CA.UnprocessedUpdates,
53+
CA.LaunchCount,
54+
1 AS IsSelfAssessment,
55+
CA.SubmittedDate,
56+
CR.CentreName AS CentreName,
57+
CA.EnrolmentMethodId,
58+
uEnrolledBy.FirstName AS EnrolledByForename,
59+
uEnrolledBy.LastName AS EnrolledBySurname
60+
FROM Centres AS CR INNER JOIN
61+
CandidateAssessments AS CA INNER JOIN
62+
SelfAssessments AS SA ON CA.SelfAssessmentID = SA.ID ON CR.CentreID = CA.CentreID INNER JOIN
63+
CentreSelfAssessments AS csa ON csa.SelfAssessmentID = SA.ID AND csa.CentreID = @centreId LEFT OUTER JOIN
64+
Competencies AS C RIGHT OUTER JOIN
65+
SelfAssessmentStructure AS SAS ON C.ID = SAS.CompetencyID ON CA.SelfAssessmentID = SAS.SelfAssessmentID LEFT OUTER JOIN
66+
CandidateAssessmentSupervisors AS cas ON ca.ID =cas.CandidateAssessmentID LEFT OUTER JOIN
67+
CandidateAssessmentSupervisorVerifications AS casv ON casv.CandidateAssessmentSupervisorID = cas.ID LEFT OUTER JOIN
68+
AdminAccounts AS aaEnrolledBy ON aaEnrolledBy.ID = CA.EnrolledByAdminID LEFT OUTER JOIN
69+
Users AS uEnrolledBy ON uEnrolledBy.ID = aaEnrolledBy.UserID
70+
WHERE (CA.DelegateUserID = @delegateUserId) AND (CA.RemovedDate IS NULL) AND (CA.CompletedDate IS NULL)
71+
AND (ISNULL(@adminIdCategoryID, 0) = 0 OR sa.CategoryID = @adminIdCategoryId)
72+
GROUP BY
73+
CA.SelfAssessmentID, SA.Name, SA.Description, SA.IncludesSignposting, SA.SupervisorResultsReview,
74+
SA.ReviewerCommentsLabel, SA.IncludeRequirementsFilters,
75+
COALESCE(SA.Vocabulary, 'Capability'), CA.StartedDate, CA.LastAccessed, CA.CompleteByDate,
76+
CA.ID,
77+
CA.UserBookmark, CA.UnprocessedUpdates, CA.LaunchCount, CA.SubmittedDate, CR.CentreName,CA.EnrolmentMethodId,
78+
uEnrolledBy.FirstName,uEnrolledBy.LastName)SelfAssessment LEFT OUTER JOIN
79+
(SELECT SelfAssessmentID,casv.SignedOff,MAX(casv.Verified) Verified FROM
80+
CandidateAssessments AS CA LEFT OUTER JOIN
81+
CandidateAssessmentSupervisors AS cas ON ca.ID =cas.CandidateAssessmentID LEFT OUTER JOIN
82+
CandidateAssessmentSupervisorVerifications AS casv ON casv.CandidateAssessmentSupervisorID = cas.ID
83+
WHERE (CA.DelegateUserID = @delegateUserId) AND (CA.RemovedDate IS NULL) AND (CA.CompletedDate IS NULL) AND (casv.SignedOff = 1) AND
84+
(casv.Verified IS NOT NULL)
85+
GROUP BY SelfAssessmentID,casv.SignedOff
86+
)Signoff ON SelfAssessment.Id =Signoff.SelfAssessmentID",
87+
new { delegateUserId, centreId, adminIdCategoryID }
88+
);
89+
}
1190
public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId)
1291
{
1392
return connection.Query<CurrentSelfAssessment>(
@@ -86,7 +165,6 @@ CandidateAssessments AS CA LEFT OUTER JOIN
86165
new { delegateUserId, centreId }
87166
);
88167
}
89-
90168
public CurrentSelfAssessment? GetSelfAssessmentForCandidateById(int delegateUserId, int selfAssessmentId)
91169
{
92170
return connection.QueryFirstOrDefault<CurrentSelfAssessment>(

DigitalLearningSolutions.Data/DataServices/SelfAssessmentDataService/SelfAssessmentDataService.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,8 @@ int competencyId
7272

7373
// CandidateAssessmentsDataService
7474

75+
IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId, int? adminIdCategoryID);
7576
IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId);
76-
7777
CurrentSelfAssessment? GetSelfAssessmentForCandidateById(int delegateUserId, int selfAssessmentId);
7878

7979
void UpdateLastAccessed(int selfAssessmentId, int delegateUserId);
@@ -174,7 +174,6 @@ int GetSelfAssessmentActivityDelegatesExportCount(string searchString, string so
174174
bool HasMinimumOptionalCompetencies(int selfAssessmentId, int delegateUserId);
175175
int GetSelfAssessmentCategoryId(int selfAssessmentId);
176176
}
177-
178177
public partial class SelfAssessmentDataService : ISelfAssessmentDataService
179178
{
180179
private readonly IDbConnection connection;

DigitalLearningSolutions.Data/DataServices/SupervisorDataService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public interface ISupervisorDataService
2222
DelegateSelfAssessment? GetSelfAssessmentByCandidateAssessmentId(int candidateAssessmentId, int adminId, int? adminIdCategoryId);
2323
IEnumerable<SupervisorDashboardToDoItem> GetSupervisorDashboardToDoItemsForRequestedSignOffs(int adminId);
2424
IEnumerable<SupervisorDashboardToDoItem> GetSupervisorDashboardToDoItemsForRequestedReviews(int adminId);
25-
DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId);
25+
DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId, int? adminIdCategoryId);
2626
IEnumerable<RoleProfile> GetAvailableRoleProfilesForDelegate(int candidateId, int centreId, int? categoryId);
2727
RoleProfile? GetRoleProfileById(int selfAssessmentId);
2828
IEnumerable<SelfAssessmentSupervisorRole> GetSupervisorRolesForSelfAssessment(int selfAssessmentId);
@@ -594,7 +594,7 @@ FROM CandidateAssessmentSupervisors AS cas INNER JOIN
594594
WHERE (ca.RemovedDate IS NULL) AND (cas.SupervisorDelegateId = @supervisorDelegateId) AND (cas.Removed IS NULL) AND (sa.ID = @selfAssessmentId)", new { selfAssessmentId, supervisorDelegateId }
595595
).FirstOrDefault();
596596
}
597-
public DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId)
597+
public DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId, int? adminIdCategoryId)
598598
{
599599
return connection.Query<DelegateSelfAssessment>(
600600
@$"SELECT ca.ID, sa.ID AS SelfAssessmentID, sa.Name AS RoleName, sa.QuestionLabel, sa.DescriptionLabel, sa.ReviewerCommentsLabel,
@@ -611,7 +611,7 @@ FROM SelfAssessmentResultSupervisorVerifications AS sarsv
611611
FROM CandidateAssessmentSupervisors AS cas INNER JOIN
612612
CandidateAssessments AS ca ON cas.CandidateAssessmentID = ca.ID INNER JOIN
613613
SelfAssessments AS sa ON sa.ID = ca.SelfAssessmentID
614-
WHERE (ca.ID = @candidateAssessmentId)", new { candidateAssessmentId }
614+
WHERE (ca.ID = @candidateAssessmentId) AND (ISNULL(@adminIdCategoryID, 0) = 0 OR sa.CategoryID = @adminIdCategoryId)", new { candidateAssessmentId, adminIdCategoryId }
615615
).FirstOrDefault();
616616
}
617617
public DelegateSelfAssessment? GetSelfAssessmentBySupervisorDelegateCandidateAssessmentId(int candidateAssessmentId, int supervisorDelegateId)

DigitalLearningSolutions.Web/Controllers/SupervisorController/Supervisor.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ int resultId
515515
)
516516
{
517517
var model = ReviewCompetencySelfAsessmentData(supervisorDelegateId, candidateAssessmentId, resultId);
518-
518+
if (model == null) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
519519
return View("ReviewCompetencySelfAsessment", model);
520520
}
521521

@@ -587,8 +587,10 @@ int resultId
587587
candidateAssessmentId,
588588
adminId
589589
);
590+
var loggedInAdminUser = userService.GetAdminUserById(adminId);
590591
var delegateSelfAssessment =
591-
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId);
592+
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId, loggedInAdminUser.CategoryId);
593+
if (delegateSelfAssessment == null) return null;
592594
var assessmentQuestion = GetLevelDescriptorsForAssessmentQuestion(competency.AssessmentQuestions.First());
593595
competency.CompetencyFlags = frameworkService.GetSelectedCompetencyFlagsByCompetecyId(competency.Id);
594596
var model = new ReviewCompetencySelfAsessmentViewModel()
@@ -610,10 +612,12 @@ int resultId
610612
public IActionResult VerifyMultipleResults(int supervisorDelegateId, int candidateAssessmentId)
611613
{
612614
var adminId = GetAdminId();
615+
var loggedInAdminUser = userService.GetAdminUserById(adminId);
613616
var superviseDelegate =
614617
supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminId(), 0);
615618
var delegateSelfAssessment =
616-
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId);
619+
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId, loggedInAdminUser.CategoryId);
620+
if (delegateSelfAssessment == null) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
617621
var reviewedCompetencies = PopulateCompetencyLevelDescriptors(
618622
selfAssessmentService.GetCandidateAssessmentResultsForReviewById(candidateAssessmentId, adminId)
619623
.ToList()
@@ -638,10 +642,11 @@ List<int> resultChecked
638642
if (resultChecked.Count == 0)
639643
{
640644
var adminId = GetAdminId();
645+
var loggedInAdminUser = userService.GetAdminUserById(adminId);
641646
var superviseDelegate =
642647
supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminId(), 0);
643648
var delegateSelfAssessment =
644-
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId);
649+
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId, loggedInAdminUser.CategoryId);
645650
var reviewedCompetencies = PopulateCompetencyLevelDescriptors(
646651
selfAssessmentService.GetCandidateAssessmentResultsForReviewById(candidateAssessmentId, adminId)
647652
.ToList()
@@ -1260,10 +1265,12 @@ SignOffProfileAssessmentViewModel model
12601265
public IActionResult SignOffHistory(int supervisorDelegateId, int candidateAssessmentId)
12611266
{
12621267
var adminId = GetAdminId();
1268+
var loggedInAdminUser = userService.GetAdminUserById(adminId);
12631269
var superviseDelegate =
12641270
supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, GetAdminId(), 0);
12651271
var delegateSelfAssessment =
1266-
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId);
1272+
supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId, loggedInAdminUser.CategoryId);
1273+
if (delegateSelfAssessment == null) return RedirectToAction("StatusCode", "LearningSolutions", new { code = 403 });
12671274
var model = new SignOffHistoryViewModel()
12681275
{
12691276
DelegateSelfAssessment = delegateSelfAssessment,

DigitalLearningSolutions.Web/Controllers/TrackingSystem/Delegates/ViewDelegateController.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ public IActionResult Index(int delegateId, string? callType)
8383
}
8484

8585
var selfAssessments =
86-
selfAssessmentService.GetSelfAssessmentsForCandidate(delegateEntity.UserAccount.Id, centreId);
86+
selfAssessmentService.GetSelfAssessmentsForCandidate(delegateEntity.UserAccount.Id, centreId, categoryIdFilter);
8787

8888
foreach (var selfassessment in selfAssessments)
8989
{

DigitalLearningSolutions.Web/Services/FrameworkNotificationService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ public void SendResultVerificationRequest(int candidateAssessmentSupervisorId, i
351351
int candidateAssessmentId = candidateAssessmentSupervisor.CandidateAssessmentID;
352352
var supervisorDelegate = supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, 0, delegateUserId);
353353
string centreName = GetCentreName(centreId);
354-
var delegateSelfAssessment = supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentSupervisor.CandidateAssessmentID);
354+
var delegateSelfAssessment = supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentSupervisor.CandidateAssessmentID, 0);
355355
string emailSubjectLine = $"{delegateSelfAssessment.SupervisorRoleTitle} Self Assessment Results Review Request - Digital Learning Solutions";
356356
string? profileReviewUrl = GetSupervisorProfileReviewUrl(supervisorDelegateId, candidateAssessmentId, selfAssessmentResultId);
357357
BodyBuilder? builder = new BodyBuilder();
@@ -369,7 +369,7 @@ public void SendSignOffRequest(int candidateAssessmentSupervisorId, int selfAsse
369369
int candidateAssessmentId = candidateAssessmentSupervisor.CandidateAssessmentID;
370370
var supervisorDelegate = supervisorService.GetSupervisorDelegateDetailsById(supervisorDelegateId, 0, delegateUserId);
371371
string centreName = GetCentreName(centreId);
372-
var delegateSelfAssessment = supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentSupervisor.CandidateAssessmentID);
372+
var delegateSelfAssessment = supervisorService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentSupervisor.CandidateAssessmentID, 0);
373373
string emailSubjectLine = $"{delegateSelfAssessment.SupervisorRoleTitle} Self Assessment Sign-off Request - Digital Learning Solutions";
374374
string? profileReviewUrl = GetSupervisorProfileReviewUrl(supervisorDelegateId, candidateAssessmentId);
375375
BodyBuilder? builder = new BodyBuilder();

DigitalLearningSolutions.Web/Services/SelfAssessmentService.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ public interface ISelfAssessmentService
1515
//Self Assessments
1616
string? GetSelfAssessmentNameById(int selfAssessmentId);
1717
// Candidate Assessments
18+
IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId, int? adminIdCategoryID);
1819
IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId);
19-
2020
CurrentSelfAssessment? GetSelfAssessmentForCandidateById(int delegateUserId, int selfAssessmentId);
2121

2222
void SetBookmark(int selfAssessmentId, int delegateUserId, string bookmark);
@@ -404,11 +404,14 @@ public IEnumerable<Competency> GetCandidateAssessmentOptionalCompetencies(int se
404404
return selfAssessmentDataService.GetCandidateAssessmentOptionalCompetencies(selfAssessmentId, delegateUserId);
405405
}
406406

407+
public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId, int? adminIdCategoryID)
408+
{
409+
return selfAssessmentDataService.GetSelfAssessmentsForCandidate(delegateUserId, centreId, adminIdCategoryID);
410+
}
407411
public IEnumerable<CurrentSelfAssessment> GetSelfAssessmentsForCandidate(int delegateUserId, int centreId)
408412
{
409413
return selfAssessmentDataService.GetSelfAssessmentsForCandidate(delegateUserId, centreId);
410414
}
411-
412415
public IEnumerable<Competency> GetMostRecentResults(int selfAssessmentId, int delegateId)
413416
{
414417
return selfAssessmentDataService.GetMostRecentResults(selfAssessmentId, delegateId);

DigitalLearningSolutions.Web/Services/SupervisorService.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public interface ISupervisorService
1919
DelegateSelfAssessment? GetSelfAssessmentByCandidateAssessmentId(int candidateAssessmentId, int adminId, int? adminIdCategoryId);
2020
IEnumerable<SupervisorDashboardToDoItem> GetSupervisorDashboardToDoItemsForRequestedSignOffs(int adminId);
2121
IEnumerable<SupervisorDashboardToDoItem> GetSupervisorDashboardToDoItemsForRequestedReviews(int adminId);
22-
DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId);
22+
DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId, int? adminIdCategoryId);
2323
IEnumerable<RoleProfile> GetAvailableRoleProfilesForDelegate(int candidateId, int centreId, int? categoryId);
2424
RoleProfile? GetRoleProfileById(int selfAssessmentId);
2525
IEnumerable<SelfAssessmentSupervisorRole> GetSupervisorRolesForSelfAssessment(int selfAssessmentId);
@@ -115,9 +115,9 @@ public IEnumerable<SelfAssessmentSupervisorRole> GetDelegateNominatableSuperviso
115115
return supervisorDataService.GetRoleProfileById(selfAssessmentId);
116116
}
117117

118-
public DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId)
118+
public DelegateSelfAssessment? GetSelfAssessmentBaseByCandidateAssessmentId(int candidateAssessmentId, int? adminIdCategoryId)
119119
{
120-
return supervisorDataService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId);
120+
return supervisorDataService.GetSelfAssessmentBaseByCandidateAssessmentId(candidateAssessmentId, adminIdCategoryId);
121121
}
122122

123123
public DelegateSelfAssessment? GetSelfAssessmentByCandidateAssessmentId(int candidateAssessmentId, int adminId, int? adminIdCategoryId)
@@ -275,7 +275,7 @@ public IEnumerable<SupervisorDelegateDetail> GetSupervisorDelegateDetailsForAdmi
275275
}
276276
public SupervisorDelegateDetail GetSupervisorDelegateDetailsByIdWithoutRemoveClause(int supervisorDelegateId, int adminId, int delegateUserId)
277277
{
278-
return supervisorDataService.GetSupervisorDelegateDetailsByIdWithoutRemoveClause(supervisorDelegateId,adminId, delegateUserId);
278+
return supervisorDataService.GetSupervisorDelegateDetailsByIdWithoutRemoveClause(supervisorDelegateId, adminId, delegateUserId);
279279
}
280280
}
281281
}

0 commit comments

Comments
 (0)