From 545fb43dac921945199600887374fd9a216285a6 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 23 Jul 2018 10:31:45 -0400 Subject: [PATCH] improvements to collection user sproc --- ...llectionUserDetails_ReadByCollectionId.sql | 4 +- .../2018-06-11_00_WebVaultUpdates.sql | 52 +++++++++++++++++++ 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/src/Sql/dbo/Stored Procedures/CollectionUserDetails_ReadByCollectionId.sql b/src/Sql/dbo/Stored Procedures/CollectionUserDetails_ReadByCollectionId.sql index 6b07d92229..82492b2ec7 100644 --- a/src/Sql/dbo/Stored Procedures/CollectionUserDetails_ReadByCollectionId.sql +++ b/src/Sql/dbo/Stored Procedures/CollectionUserDetails_ReadByCollectionId.sql @@ -21,8 +21,6 @@ BEGIN END [ReadOnly] FROM [dbo].[OrganizationUser] OU - LEFT JOIN - [dbo].[User] U ON U.[Id] = OU.[UserId] LEFT JOIN [dbo].[CollectionUser] CU ON OU.[AccessAll] = 0 AND CU.[OrganizationUserId] = OU.[Id] AND CU.[CollectionId] = @CollectionId LEFT JOIN @@ -31,6 +29,8 @@ BEGIN [dbo].[Group] G ON G.[Id] = GU.[GroupId] LEFT JOIN [dbo].[CollectionGroup] CG ON G.[AccessAll] = 0 AND CG.[GroupId] = GU.[GroupId] AND CG.[CollectionId] = @CollectionId + LEFT JOIN + [dbo].[User] U ON U.[Id] = OU.[UserId] WHERE CU.[CollectionId] IS NOT NULL OR CG.[CollectionId] IS NOT NULL diff --git a/util/Setup/DbScripts/2018-06-11_00_WebVaultUpdates.sql b/util/Setup/DbScripts/2018-06-11_00_WebVaultUpdates.sql index 165ebf4902..974f0a9e7b 100644 --- a/util/Setup/DbScripts/2018-06-11_00_WebVaultUpdates.sql +++ b/util/Setup/DbScripts/2018-06-11_00_WebVaultUpdates.sql @@ -665,3 +665,55 @@ BEGIN EXEC [dbo].[User_BumpAccountRevisionDate] @UserId END GO + +IF OBJECT_ID('[dbo].[CollectionUserDetails_ReadByCollectionId]') IS NOT NULL +BEGIN + DROP PROCEDURE [dbo].[CollectionUserDetails_ReadByCollectionId] +END +GO + +CREATE PROCEDURE [dbo].[CollectionUserDetails_ReadByCollectionId] + @CollectionId UNIQUEIDENTIFIER, + @OrganizationId UNIQUEIDENTIFIER +AS +BEGIN + SET NOCOUNT ON + + SELECT + OU.[Id] AS [OrganizationUserId], + CASE + WHEN OU.[AccessAll] = 1 OR G.[AccessAll] = 1 THEN 1 + ELSE 0 + END [AccessAll], + U.[Name], + ISNULL(U.[Email], OU.[Email]) Email, + OU.[Status], + OU.[Type], + CASE + WHEN OU.[AccessAll] = 1 OR CU.[ReadOnly] = 0 OR G.[AccessAll] = 1 OR CG.[ReadOnly] = 0 THEN 0 + ELSE 1 + END [ReadOnly] + FROM + [dbo].[OrganizationUser] OU + LEFT JOIN + [dbo].[CollectionUser] CU ON OU.[AccessAll] = 0 AND CU.[OrganizationUserId] = OU.[Id] AND CU.[CollectionId] = @CollectionId + LEFT JOIN + [dbo].[GroupUser] GU ON CU.[CollectionId] IS NULL AND OU.[AccessAll] = 0 AND GU.[OrganizationUserId] = OU.[Id] + LEFT JOIN + [dbo].[Group] G ON G.[Id] = GU.[GroupId] + LEFT JOIN + [dbo].[CollectionGroup] CG ON G.[AccessAll] = 0 AND CG.[GroupId] = GU.[GroupId] AND CG.[CollectionId] = @CollectionId + LEFT JOIN + [dbo].[User] U ON U.[Id] = OU.[UserId] + WHERE + CU.[CollectionId] IS NOT NULL + OR CG.[CollectionId] IS NOT NULL + OR ( + OU.[OrganizationId] = @OrganizationId + AND ( + OU.[AccessAll] = 1 + OR G.[AccessAll] = 1 + ) + ) +END +GO