You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.5 KiB
55 lines
1.5 KiB
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
|
|
|