From 56860a51fd805acca35134997eb849c3e73b2d1e Mon Sep 17 00:00:00 2001 From: Colin Beeby Date: Thu, 21 Mar 2024 14:50:25 +0000 Subject: [PATCH] Added trigger to ensure that DigitalLearningSolutions external user system also includes DigitalLearningSolutionsSso external user system --- .../LearningHub.Nhs.Database.sqlproj | 3 ++ .../AddDigitalLearningSolutionsSso.sql | 23 ++++++++++++ ...DigitalLearningSolutionsExternalSystem.sql | 35 +++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 WebAPI/LearningHub.Nhs.Database/Scripts/External/AddDigitalLearningSolutionsSso.sql create mode 100644 WebAPI/LearningHub.Nhs.Database/Triggers/external/AddDigitalLearningSolutionsExternalSystem.sql diff --git a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj index 10abd06ef..b9cd9238d 100644 --- a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj +++ b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj @@ -98,6 +98,8 @@ + + @@ -506,6 +508,7 @@ + diff --git a/WebAPI/LearningHub.Nhs.Database/Scripts/External/AddDigitalLearningSolutionsSso.sql b/WebAPI/LearningHub.Nhs.Database/Scripts/External/AddDigitalLearningSolutionsSso.sql new file mode 100644 index 000000000..27c0d2056 --- /dev/null +++ b/WebAPI/LearningHub.Nhs.Database/Scripts/External/AddDigitalLearningSolutionsSso.sql @@ -0,0 +1,23 @@ +/* +Script for adding DigitalLearningSolutionsSso ExternalSystemUser to users which already have DigitalLearningSolutions ExternalSystemUser +*/ +DECLARE @DigitalLearningSolutionsId INT; +DECLARE @DigitalLearningSolutionsSsoId INT; + +SELECT @DigitalLearningSolutionsId = id + FROM [external].[ExternalSystem] + WHERE code = 'DigitalLearningSolutions'; + +SELECT @DigitalLearningSolutionsSsoId = id + FROM [external].[ExternalSystem] + WHERE code = 'DigitalLearningSolutionsSso'; + +INSERT INTO [external].[ExternalSystemUser] (UserId, ExternalSystemId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate) +SELECT UserId, @DigitalLearningSolutionsId, Deleted, 4, SYSDATETIMEOFFSET(), 4, SYSDATETIMEOFFSET() +FROM [external].[ExternalSystemUser] +WHERE ExternalSystemId = @DigitalLearningSolutionsSsoId + AND userId NOT IN ( + SELECT userId + FROM [external].[ExternalSystemUser] + WHERE ExternalSystemId = @DigitalLearningSolutionsId + ); \ No newline at end of file diff --git a/WebAPI/LearningHub.Nhs.Database/Triggers/external/AddDigitalLearningSolutionsExternalSystem.sql b/WebAPI/LearningHub.Nhs.Database/Triggers/external/AddDigitalLearningSolutionsExternalSystem.sql new file mode 100644 index 000000000..7ce24a0b1 --- /dev/null +++ b/WebAPI/LearningHub.Nhs.Database/Triggers/external/AddDigitalLearningSolutionsExternalSystem.sql @@ -0,0 +1,35 @@ + +------------------------------------------------------------------------------- +-- Author Colin Beeby +-- Created 21-03-2024 +-- Purpose Ensure that when a user is associated with external system DigitalLearningSolutionsSso, they are also associated with DigitalLearningSolutions +-- +-- Modification History +-- +-- 21-03-2024 ColB Initial Version +------------------------------------------------------------------------------- + +CREATE TRIGGER [external].InsertTrigger_AddDigitalLearningSolutionsExternalSystem +ON [external].[ExternalSystemUser] +FOR INSERT +AS +BEGIN + DECLARE @DigitalLearningSolutionsId INT; + DECLARE @DigitalLearningSolutionsSsoId INT; + + SELECT @DigitalLearningSolutionsId = id + FROM [external].[ExternalSystem] + WHERE code = 'DigitalLearningSolutions'; + + SELECT @DigitalLearningSolutionsSsoId = id + FROM [external].[ExternalSystem] + WHERE code = 'DigitalLearningSolutionsSso'; + + + IF EXISTS (SELECT 1 FROM inserted WHERE ExternalSystemId = @DigitalLearningSolutionsSsoId) + BEGIN + INSERT INTO ExternalSystemUser (UserId, ExternalSystemId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate) + SELECT UserId, @DigitalLearningSolutionsId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate + FROM inserted; + END +END; \ No newline at end of file