From 11c4522d3ba2049324b71d60a24d42a29f75065b Mon Sep 17 00:00:00 2001 From: Auldrin Possa Date: Mon, 2 Dec 2024 09:11:07 +0000 Subject: [PATCH 1/2] TD-4787- Changed role from Educator/Manager to Assessor for nominated supervisors --- ...dateCandidateAssessmentSupervisorsTable.cs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 DigitalLearningSolutions.Data.Migrations/202412020900_UpdateCandidateAssessmentSupervisorsTable.cs diff --git a/DigitalLearningSolutions.Data.Migrations/202412020900_UpdateCandidateAssessmentSupervisorsTable.cs b/DigitalLearningSolutions.Data.Migrations/202412020900_UpdateCandidateAssessmentSupervisorsTable.cs new file mode 100644 index 0000000000..0304c7aade --- /dev/null +++ b/DigitalLearningSolutions.Data.Migrations/202412020900_UpdateCandidateAssessmentSupervisorsTable.cs @@ -0,0 +1,36 @@ +namespace DigitalLearningSolutions.Data.Migrations +{ + using FluentMigrator; + + [Migration(202412020900)] + public class UpdateCandidateAssessmentSupervisorsTable : ForwardOnlyMigration + { + public override void Up() + { + Execute.Sql($@"UPDATE cas + SET SelfAssessmentSupervisorRoleID = (SELECT ID FROM SelfAssessmentSupervisorRoles + WHERE SelfAssessmentID = ssr.SelfAssessmentID and AllowDelegateNomination = 1) + FROM CandidateAssessmentSupervisors cas INNER JOIN + SelfAssessmentSupervisorRoles ssr ON cas.SelfAssessmentSupervisorRoleID = ssr.ID + AND cas.Removed IS NULL AND ssr.AllowDelegateNomination = 0 INNER JOIN + SupervisorDelegates sd ON cas.SupervisorDelegateId = sd.ID INNER JOIN + AdminAccounts aa ON sd.SupervisorAdminID = aa.ID + WHERE aa.IsSupervisor = 0 AND aa.IsNominatedSupervisor = 1 + -- to exclude duplicate CandidateAssessmentID from update + AND cas.CandidateAssessmentID NOT IN ( + SELECT CandidateAssessmentID FROM CandidateAssessmentSupervisors WHERE CandidateAssessmentID in ( + SELECT Cas2.CandidateAssessmentID + FROM CandidateAssessmentSupervisors cas2 with (nolock) INNER JOIN + SelfAssessmentSupervisorRoles ssr2 with (nolock) ON cas2.SelfAssessmentSupervisorRoleID = ssr2.ID + AND cas2.Removed IS NULL AND ssr2.AllowDelegateNomination = 0 INNER JOIN + SupervisorDelegates sd2 with (nolock) ON cas2.SupervisorDelegateId = sd2.ID INNER JOIN + AdminAccounts aa2 with (nolock) ON sd2.SupervisorAdminID = aa2.ID + WHERE aa2.IsSupervisor = 0 AND aa2.IsNominatedSupervisor = 1 + ) + GROUP BY CandidateAssessmentID,SupervisorDelegateId + HAVING COUNT(*)>1 + )" + ); + } + } +} From 399189b31d9e4a07b65ea87e83b207bf41216f50 Mon Sep 17 00:00:00 2001 From: Auldrin Possa Date: Tue, 3 Dec 2024 15:36:43 +0000 Subject: [PATCH 2/2] TD-5095-SupervisorDelegateId check added along with CandidateAssessmentID to update CandidateAssessmentSupervisors --- .../DataServices/CourseDataService.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs b/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs index 9f0ab58aec..9e3addf30f 100644 --- a/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs +++ b/DigitalLearningSolutions.Data/DataServices/CourseDataService.cs @@ -542,7 +542,7 @@ LEFT OUTER JOIN UserCentreDetails AS UCD ON new { candidateAssessmentId, enrolmentMethodId, completeByDateDynamic } ); } - if (candidateAssessmentId > 1 && supervisorDelegateId !=0) + if (candidateAssessmentId > 1 && supervisorDelegateId != 0) { string sqlQuery = $@" BEGIN TRANSACTION @@ -551,17 +551,17 @@ BEGIN TRANSACTION UPDATE CandidateAssessmentSupervisors SET Removed = NULL {((selfAssessmentSupervisorRoleId > 0) ? " ,SelfAssessmentSupervisorRoleID = @selfAssessmentSupervisorRoleID" : string.Empty)} - WHERE CandidateAssessmentID = @candidateAssessmentId + WHERE CandidateAssessmentID = @candidateAssessmentId AND SupervisorDelegateId = @supervisorDelegateId COMMIT TRANSACTION"; connection.Execute(sqlQuery - , new { candidateAssessmentId, selfAssessmentSupervisorRoleId, enrolmentMethodId, completeByDateDynamic }); + , new { candidateAssessmentId, selfAssessmentSupervisorRoleId, enrolmentMethodId, completeByDateDynamic, supervisorDelegateId }); } if (supervisorId > 0) { - + var adminUserId = Convert.ToInt32(connection.ExecuteScalar(@"SELECT UserID FROM AdminAccounts WHERE (AdminAccounts.ID = @supervisorId)", new { supervisorId }) );