From f68f3f7e9482a13b0f87afc394525e234fa7acc2 Mon Sep 17 00:00:00 2001 From: Sarathlal Sarangadharan Date: Tue, 24 Sep 2024 09:04:03 +0100 Subject: [PATCH] TD-4736: Resource which is contributed after external referencing is not showing under the folder of primary catalogue in edit mode --- .../Hierarchy/NodeResourcePublish.sql | 53 +++++++++++++------ 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/NodeResourcePublish.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/NodeResourcePublish.sql index 46cd1b01b..c4a7d7bf2 100644 --- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/NodeResourcePublish.sql +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/NodeResourcePublish.sql @@ -9,6 +9,7 @@ -- Note: IT1 assumes a Resource exists in a single Node location. -- 21-12-2021 RS Fix to NodeResource update when republishing unpublished resource. -- 09-02-2022 KD Explicitly exclude External Orgs from Resource Reference processing. +-- 20-09-2024 SS Multiple Node path scenario handled when external reference is present in catalogue ------------------------------------------------------------------------------- CREATE PROCEDURE [hierarchy].[NodeResourcePublish] ( @@ -27,12 +28,15 @@ BEGIN -- IT1 - NodePath can be obtained from the NodeId -- IT2 - NodePath to be supplied as param DECLARE @NodePathId int - - SELECT @NodePathId = Id + DECLARE @NodePathIds table (NodePathId int) + INSERT INTO @NodePathIds (NodePathId) + SELECT Id FROM hierarchy.NodePath WHERE NodeId = @NodeId AND Deleted = 0 AND IsActive = 1 - IF @NodePathId IS NULL + DECLARE ResourceReferenceCursor CURSOR FOR SELECT NodePathId FROM @NodePathIds + OPEN ResourceReferenceCursor + IF NOT EXISTS (SELECT 1 FROM @NodePathIds) BEGIN RAISERROR ('NodeResourcePublish: Error - An active NodePath is required', -- Message text. 16, -- Severity. @@ -166,24 +170,43 @@ BEGIN IF @OriginalResourceReferenceId IS NULL BEGIN - INSERT INTO resources.ResourceReference (ResourceId, NodePathId, OriginalResourceReferenceId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate) - VALUES (@ResourceId, @NodePathId, NULL, 0, @AmendUserId, @AmendDate, @AmendUserId, @AmendDate) + FETCH NEXT FROM ResourceReferenceCursor INTO @NodePathId; + WHILE @@FETCH_STATUS = 0 + BEGIN + INSERT INTO resources.ResourceReference (ResourceId, NodePathId, OriginalResourceReferenceId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate) + VALUES (@ResourceId, @NodePathId, NULL, 0, @AmendUserId, @AmendDate, @AmendUserId, @AmendDate) + + UPDATE rr + SET OriginalResourceReferenceId = Id + FROM resources.ResourceReference rr + WHERE Id = SCOPE_IDENTITY() AND OriginalResourceReferenceId IS NULL - UPDATE rr - SET OriginalResourceReferenceId = Id - FROM resources.ResourceReference rr - WHERE Id = SCOPE_IDENTITY() AND OriginalResourceReferenceId IS NULL + FETCH NEXT FROM ResourceReferenceCursor INTO @NodePathId; + + END + CLOSE ResourceReferenceCursor; + END ELSE BEGIN - INSERT INTO resources.ResourceReference (ResourceId, NodePathId, OriginalResourceReferenceId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate) - VALUES (@ResourceId, @NodePathId, @OriginalResourceReferenceId, 0, @AmendUserId, @AmendDate, @AmendUserId, @AmendDate) + FETCH NEXT FROM ResourceReferenceCursor INTO @NodePathId; + WHILE @@FETCH_STATUS = 0 + BEGIN + + INSERT INTO resources.ResourceReference (ResourceId, NodePathId, OriginalResourceReferenceId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate) + VALUES (@ResourceId, @NodePathId, @OriginalResourceReferenceId, 0, @AmendUserId, @AmendDate, @AmendUserId, @AmendDate) - UPDATE resources.ResourceReference - SET Deleted = 1 - WHERE Id = @ExistingResourceReferenceId - END + UPDATE resources.ResourceReference + SET Deleted = 1 + WHERE Id = @ExistingResourceReferenceId + + FETCH NEXT FROM ResourceReferenceCursor INTO @NodePathId; + END + CLOSE ResourceReferenceCursor; + + END + DEALLOCATE ResourceReferenceCursor; ---------------------------------------------------------- -- NodeResourceLookup ----------------------------------------------------------