Skip to content

Commit 19d54de

Browse files
Merge pull request #604 from TechnologyEnhancedLearning/Develop/Fixes/TD-4736-Resource-which-is-contributed-after-external-referencing-is-not-showing-under-the-folder-of-primary-catalogue-in-edit-mode
TD-4736: Resource which is contributed after external referencing is not showing under the folder of primary catalogue in edit mode
2 parents b3b7a77 + f68f3f7 commit 19d54de

File tree

1 file changed

+38
-15
lines changed

1 file changed

+38
-15
lines changed

WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/NodeResourcePublish.sql

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
-- Note: IT1 assumes a Resource exists in a single Node location.
1010
-- 21-12-2021 RS Fix to NodeResource update when republishing unpublished resource.
1111
-- 09-02-2022 KD Explicitly exclude External Orgs from Resource Reference processing.
12+
-- 20-09-2024 SS Multiple Node path scenario handled when external reference is present in catalogue
1213
-------------------------------------------------------------------------------
1314
CREATE PROCEDURE [hierarchy].[NodeResourcePublish]
1415
(
@@ -27,12 +28,15 @@ BEGIN
2728
-- IT1 - NodePath can be obtained from the NodeId
2829
-- IT2 - NodePath to be supplied as param
2930
DECLARE @NodePathId int
30-
31-
SELECT @NodePathId = Id
31+
DECLARE @NodePathIds table (NodePathId int)
32+
INSERT INTO @NodePathIds (NodePathId)
33+
SELECT Id
3234
FROM hierarchy.NodePath
3335
WHERE NodeId = @NodeId AND Deleted = 0 AND IsActive = 1
3436

35-
IF @NodePathId IS NULL
37+
DECLARE ResourceReferenceCursor CURSOR FOR SELECT NodePathId FROM @NodePathIds
38+
OPEN ResourceReferenceCursor
39+
IF NOT EXISTS (SELECT 1 FROM @NodePathIds)
3640
BEGIN
3741
RAISERROR ('NodeResourcePublish: Error - An active NodePath is required', -- Message text.
3842
16, -- Severity.
@@ -166,24 +170,43 @@ BEGIN
166170

167171
IF @OriginalResourceReferenceId IS NULL
168172
BEGIN
169-
INSERT INTO resources.ResourceReference (ResourceId, NodePathId, OriginalResourceReferenceId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate)
170-
VALUES (@ResourceId, @NodePathId, NULL, 0, @AmendUserId, @AmendDate, @AmendUserId, @AmendDate)
173+
FETCH NEXT FROM ResourceReferenceCursor INTO @NodePathId;
174+
WHILE @@FETCH_STATUS = 0
175+
BEGIN
176+
INSERT INTO resources.ResourceReference (ResourceId, NodePathId, OriginalResourceReferenceId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate)
177+
VALUES (@ResourceId, @NodePathId, NULL, 0, @AmendUserId, @AmendDate, @AmendUserId, @AmendDate)
178+
179+
UPDATE rr
180+
SET OriginalResourceReferenceId = Id
181+
FROM resources.ResourceReference rr
182+
WHERE Id = SCOPE_IDENTITY() AND OriginalResourceReferenceId IS NULL
171183

172-
UPDATE rr
173-
SET OriginalResourceReferenceId = Id
174-
FROM resources.ResourceReference rr
175-
WHERE Id = SCOPE_IDENTITY() AND OriginalResourceReferenceId IS NULL
184+
FETCH NEXT FROM ResourceReferenceCursor INTO @NodePathId;
185+
186+
END
187+
CLOSE ResourceReferenceCursor;
188+
176189
END
177190
ELSE
178191
BEGIN
179-
INSERT INTO resources.ResourceReference (ResourceId, NodePathId, OriginalResourceReferenceId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate)
180-
VALUES (@ResourceId, @NodePathId, @OriginalResourceReferenceId, 0, @AmendUserId, @AmendDate, @AmendUserId, @AmendDate)
192+
FETCH NEXT FROM ResourceReferenceCursor INTO @NodePathId;
193+
WHILE @@FETCH_STATUS = 0
194+
BEGIN
195+
196+
INSERT INTO resources.ResourceReference (ResourceId, NodePathId, OriginalResourceReferenceId, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate)
197+
VALUES (@ResourceId, @NodePathId, @OriginalResourceReferenceId, 0, @AmendUserId, @AmendDate, @AmendUserId, @AmendDate)
181198

182-
UPDATE resources.ResourceReference
183-
SET Deleted = 1
184-
WHERE Id = @ExistingResourceReferenceId
185-
END
199+
UPDATE resources.ResourceReference
200+
SET Deleted = 1
201+
WHERE Id = @ExistingResourceReferenceId
202+
203+
FETCH NEXT FROM ResourceReferenceCursor INTO @NodePathId;
186204

205+
END
206+
CLOSE ResourceReferenceCursor;
207+
208+
END
209+
DEALLOCATE ResourceReferenceCursor;
187210
----------------------------------------------------------
188211
-- NodeResourceLookup
189212
----------------------------------------------------------

0 commit comments

Comments
 (0)