diff --git a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj index 81287ed13..80d3d47c4 100644 --- a/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj +++ b/WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj @@ -543,6 +543,7 @@ + diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyEditPublish.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyEditPublish.sql index 82ce8f325..798eb322b 100644 --- a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyEditPublish.sql +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyEditPublish.sql @@ -18,6 +18,7 @@ -- 03-06-2024 DB Publish NodePathDisplayVersion records. -- 13-06-2024 DB Publish ResourceReferenceDisplayVersion records. -- 26-07-2024 SA Remove references to be implemented +-- 21-08-2024 SS Publishing catalogues needs to update referencing catalogues -- 27-08-2024 SA Moving a folder into a referenced folder should affect all instances of the referenced folder.[added -- condition to avoid duplicate entries in to NodeLink table] -- 02-09-2024 DB Remove any deleted NodePathDisplayVersion anf ResourceReferenceDisplayVersion records. @@ -560,7 +561,11 @@ BEGIN AND np.CatalogueNodeId != np.NodeId AND hed.NodeId IS NULL + ---------------------------------------------------------- + -- NodePath: generate new NodePath/s for refered Catalogues + ---------------------------------------------------------- + EXEC [hierarchy].[HierarchyNewNodePathForReferedCatalogue] @HierarchyEditId,@AmendUserId,@AmendDate ---------------------------------------------------------- -- NodePathNode ---------------------------------------------------------- @@ -576,7 +581,7 @@ BEGIN SET @NodePathCursor = CURSOR FORWARD_ONLY FOR SELECT NodePathId, NodeId, ParentNodeId, InitialNodePath, NewNodePath, HierarchyEditDetailOperationId FROM hierarchy.HierarchyEditDetail - WHERE HierarchyEditId = 80 + WHERE HierarchyEditId = @HierarchyEditId AND ISNULL(InitialNodePath, '') != ISNULL(NewNodePath, InitialNodePath) AND ( HierarchyEditDetailTypeId = 4 -- Node Link diff --git a/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyNewNodePathForReferedCatalogue.sql b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyNewNodePathForReferedCatalogue.sql new file mode 100644 index 000000000..8b87995d6 --- /dev/null +++ b/WebAPI/LearningHub.Nhs.Database/Stored Procedures/Hierarchy/HierarchyNewNodePathForReferedCatalogue.sql @@ -0,0 +1,95 @@ +------------------------------------------------------------------------------- +-- Author Sarathlal +-- Created 21-08-2024 +-- Purpose Publishing catalogues needs to update referencing catalogues +-- +-- Modification History +-- 21-08-2024 SS Initial version +------------------------------------------------------------------------------- +CREATE PROCEDURE [hierarchy].[HierarchyNewNodePathForReferedCatalogue] +( + @HierarchyEditId INT, + @AmendUserId INT, + @AmendDate datetimeoffset(7) +) + +AS + +BEGIN + BEGIN TRY + + BEGIN TRAN + DECLARE @NodePathId int + DECLARE @PrimaryCatalogueNodeId int + DECLARE @NodeId int + DECLARE @ParentNodeId int + DECLARE @NewNodePath as NVARCHAR(256) + DECLARE @DisplayOrder int + DECLARE @NewNodePathCursor as CURSOR + SET @NewNodePathCursor = CURSOR FORWARD_ONLY FOR + SELECT + PrimaryCatalogueNodeId, + ParentNodeId, + NodeId, + hed.NewNodePath, + DisplayOrder, + NodePathId + FROM + hierarchy.HierarchyEditDetail hed + WHERE + HierarchyEditId = @HierarchyEditId + AND + ( + HierarchyEditDetailTypeId = 4 -- Node Link + OR + HierarchyEditDetailTypeId = 3 -- Folder Node + ) + AND ( + HierarchyEditDetailOperationId = 1 -- Add + OR + HierarchyEditDetailOperationId = 2 -- Edit + ) + AND NodeLinkId IS NULL + AND [Deleted] = 0 + OPEN @NewNodePathCursor; + FETCH NEXT FROM @NewNodePathCursor INTO @PrimaryCatalogueNodeId,@ParentNodeId,@NodeId,@NewNodePath,@DisplayOrder,@NodePathId; + WHILE @@FETCH_STATUS = 0 + BEGIN + IF NOT EXISTS (SELECT 1 FROM hierarchy.NodePath WHERE NodeId=@NodeId AND NodePath=NodePath+'\'+CAST(@NodeId AS VARCHAR(100))) + BEGIN + INSERT INTO hierarchy.NodePath (NodeId, NodePath, CatalogueNodeId, IsActive, Deleted, CreateUserId, CreateDate, AmendUserId, AmendDate) + SELECT @NodeId,NP.NodePath+'\'+CAST(@NodeId AS VARCHAR(100)),NP.CatalogueNodeId,1,0,@AmendUserId,@AmendDate,@AmendUserId,@AmendDate FROM + hub.[fn_Split](@NewNodePath, '\') nodeInPath + INNER JOIN hierarchy.NodePath NP ON NP.NodeId=nodeInPath.value AND CatalogueNodeId!=@PrimaryCatalogueNodeId + WHERE nodeInPath.value=@ParentNodeId + + END + + + FETCH NEXT FROM @NewNodePathCursor INTO @PrimaryCatalogueNodeId,@ParentNodeId,@NodeId,@NewNodePath,@DisplayOrder,@NodePathId; + + END + + CLOSE @NewNodePathCursor; + DEALLOCATE @NewNodePathCursor; + COMMIT + + END TRY + BEGIN CATCH + DECLARE @ErrorMessage NVARCHAR(4000); + DECLARE @ErrorSeverity INT; + DECLARE @ErrorState INT; + + SELECT + @ErrorMessage = ERROR_MESSAGE(), + @ErrorSeverity = ERROR_SEVERITY(), + @ErrorState = ERROR_STATE(); + + IF @@TRANCOUNT > 0 + ROLLBACK TRAN; + + RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState); + + END CATCH +END +GO \ No newline at end of file