|
| 1 | +namespace DigitalLearningSolutions.Data.Migrations |
| 2 | +{ |
| 3 | + using FluentMigrator; |
| 4 | + |
| 5 | + [Migration(202412020900)] |
| 6 | + public class UpdateCandidateAssessmentSupervisorsTable : ForwardOnlyMigration |
| 7 | + { |
| 8 | + public override void Up() |
| 9 | + { |
| 10 | + Execute.Sql($@"UPDATE cas |
| 11 | + SET SelfAssessmentSupervisorRoleID = (SELECT ID FROM SelfAssessmentSupervisorRoles |
| 12 | + WHERE SelfAssessmentID = ssr.SelfAssessmentID and AllowDelegateNomination = 1) |
| 13 | + FROM CandidateAssessmentSupervisors cas INNER JOIN |
| 14 | + SelfAssessmentSupervisorRoles ssr ON cas.SelfAssessmentSupervisorRoleID = ssr.ID |
| 15 | + AND cas.Removed IS NULL AND ssr.AllowDelegateNomination = 0 INNER JOIN |
| 16 | + SupervisorDelegates sd ON cas.SupervisorDelegateId = sd.ID INNER JOIN |
| 17 | + AdminAccounts aa ON sd.SupervisorAdminID = aa.ID |
| 18 | + WHERE aa.IsSupervisor = 0 AND aa.IsNominatedSupervisor = 1 |
| 19 | + -- to exclude duplicate CandidateAssessmentID from update |
| 20 | + AND cas.CandidateAssessmentID NOT IN ( |
| 21 | + SELECT CandidateAssessmentID FROM CandidateAssessmentSupervisors WHERE CandidateAssessmentID in ( |
| 22 | + SELECT Cas2.CandidateAssessmentID |
| 23 | + FROM CandidateAssessmentSupervisors cas2 with (nolock) INNER JOIN |
| 24 | + SelfAssessmentSupervisorRoles ssr2 with (nolock) ON cas2.SelfAssessmentSupervisorRoleID = ssr2.ID |
| 25 | + AND cas2.Removed IS NULL AND ssr2.AllowDelegateNomination = 0 INNER JOIN |
| 26 | + SupervisorDelegates sd2 with (nolock) ON cas2.SupervisorDelegateId = sd2.ID INNER JOIN |
| 27 | + AdminAccounts aa2 with (nolock) ON sd2.SupervisorAdminID = aa2.ID |
| 28 | + WHERE aa2.IsSupervisor = 0 AND aa2.IsNominatedSupervisor = 1 |
| 29 | + ) |
| 30 | + GROUP BY CandidateAssessmentID,SupervisorDelegateId |
| 31 | + HAVING COUNT(*)>1 |
| 32 | + )" |
| 33 | + ); |
| 34 | + } |
| 35 | + } |
| 36 | +} |
0 commit comments