@@ -943,18 +943,45 @@ FROM CandidateAssessmentSupervisors
943943
944944 if ( candidateAssessmentSupervisorsId == 0 )
945945 {
946+ //For a candidate assessment, only one supervisor role should be active (Removed = null)
946947 var numberOfAffectedRows = connection . Execute (
947- @"INSERT INTO CandidateAssessmentSupervisors (CandidateAssessmentID, SupervisorDelegateId, SelfAssessmentSupervisorRoleID)
948- VALUES (@candidateAssessmentId, @supervisorDelegateId, @selfAssessmentSupervisorRoleId)" , new { candidateAssessmentId , supervisorDelegateId , selfAssessmentSupervisorRoleId }
948+ @"BEGIN TRY
949+ BEGIN TRANSACTION
950+ UPDATE CandidateAssessmentSupervisors SET Removed = getUTCDate() WHERE CandidateAssessmentID = @candidateAssessmentId
951+ AND SupervisorDelegateId = @supervisorDelegateId
952+ AND Removed IS NULL
953+
954+ INSERT INTO CandidateAssessmentSupervisors (CandidateAssessmentID, SupervisorDelegateId, SelfAssessmentSupervisorRoleID)
955+ VALUES (@candidateAssessmentId, @supervisorDelegateId, @selfAssessmentSupervisorRoleId)
956+
957+ COMMIT TRANSACTION
958+ END TRY
959+ BEGIN CATCH
960+ ROLLBACK TRANSACTION
961+ END CATCH" ,
962+ new { candidateAssessmentId , supervisorDelegateId , selfAssessmentSupervisorRoleId }
949963 ) ;
950964 }
951965 else
952966 {
967+ //For a candidate assessment, only one supervisor role should be active (Removed = null)
953968 int numberOfAffectedRows = connection . Execute (
954- @"UPDATE CandidateAssessmentSupervisors SET Removed = NULL WHERE CandidateAssessmentID = @candidateAssessmentId
955- AND SupervisorDelegateId = @supervisorDelegateId
956- AND SelfAssessmentSupervisorRoleId=@selfAssessmentSupervisorRoleId" ,
957- new { candidateAssessmentId , supervisorDelegateId , selfAssessmentSupervisorRoleId } ) ;
969+ @"BEGIN TRY
970+ BEGIN TRANSACTION
971+ UPDATE CandidateAssessmentSupervisors SET Removed = getUTCDate() WHERE CandidateAssessmentID = @candidateAssessmentId
972+ AND SupervisorDelegateId = @supervisorDelegateId
973+ AND Removed IS NULL
974+
975+ UPDATE CandidateAssessmentSupervisors SET Removed = NULL WHERE CandidateAssessmentID = @candidateAssessmentId
976+ AND SupervisorDelegateId = @supervisorDelegateId
977+ AND SelfAssessmentSupervisorRoleId = @selfAssessmentSupervisorRoleId
978+
979+ COMMIT TRANSACTION
980+ END TRY
981+ BEGIN CATCH
982+ ROLLBACK TRANSACTION
983+ END CATCH" ,
984+ new { candidateAssessmentId , supervisorDelegateId , selfAssessmentSupervisorRoleId } ) ;
958985 }
959986 }
960987 return candidateAssessmentId ;
@@ -968,9 +995,6 @@ BEGIN TRANSACTION
968995 UPDATE CandidateAssessments SET RemovedDate = getUTCDate(), RemovalMethodID = 2
969996 WHERE ID = @candidateAssessmentId AND RemovedDate IS NULL
970997
971- UPDATE CandidateAssessmentSupervisors SET Removed = getUTCDate()
972- WHERE CandidateAssessmentID = @candidateAssessmentId AND Removed IS NULL
973-
974998 COMMIT TRANSACTION
975999 END TRY
9761000 BEGIN CATCH
0 commit comments