4 changed files with 109 additions and 43 deletions
@ -0,0 +1,55 @@
@@ -0,0 +1,55 @@
|
||||
CREATE OR ALTER PROCEDURE [dbo].[CollectionCipher_UpdateCollectionsAdmin] |
||||
@CipherId UNIQUEIDENTIFIER, |
||||
@OrganizationId UNIQUEIDENTIFIER, |
||||
@CollectionIds AS [dbo].[GuidIdArray] READONLY |
||||
AS |
||||
BEGIN |
||||
SET NOCOUNT ON; |
||||
|
||||
-- Available collections for this org, excluding default collections |
||||
SELECT |
||||
C.[Id] |
||||
INTO #TempAvailableCollections |
||||
FROM [dbo].[Collection] AS C |
||||
WHERE |
||||
C.[OrganizationId] = @OrganizationId |
||||
AND C.[Type] <> 1; -- exclude DefaultUserCollection |
||||
|
||||
-- Insert new collection assignments |
||||
INSERT INTO [dbo].[CollectionCipher] ( |
||||
[CollectionId], |
||||
[CipherId] |
||||
) |
||||
SELECT |
||||
S.[Id], |
||||
@CipherId |
||||
FROM @CollectionIds AS S |
||||
INNER JOIN #TempAvailableCollections AS A |
||||
ON A.[Id] = S.[Id] |
||||
WHERE NOT EXISTS ( |
||||
SELECT 1 |
||||
FROM [dbo].[CollectionCipher] AS CC |
||||
WHERE CC.[CollectionId] = S.[Id] |
||||
AND CC.[CipherId] = @CipherId |
||||
); |
||||
|
||||
-- Delete removed collection assignments |
||||
DELETE CC |
||||
FROM [dbo].[CollectionCipher] AS CC |
||||
INNER JOIN #TempAvailableCollections AS A |
||||
ON A.[Id] = CC.[CollectionId] |
||||
WHERE CC.[CipherId] = @CipherId |
||||
AND NOT EXISTS ( |
||||
SELECT 1 |
||||
FROM @CollectionIds AS S |
||||
WHERE S.[Id] = CC.[CollectionId] |
||||
); |
||||
|
||||
IF @OrganizationId IS NOT NULL |
||||
BEGIN |
||||
EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationId] @OrganizationId; |
||||
END |
||||
|
||||
DROP TABLE #TempAvailableCollections; |
||||
END |
||||
GO |
||||
Loading…
Reference in new issue