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.
396 lines
8.7 KiB
396 lines
8.7 KiB
IF OBJECT_ID('[dbo].[OrganizationUser_ReadCountByOrganizationOwnerUser]') IS NOT NULL |
|
BEGIN |
|
DROP PROCEDURE [dbo].[OrganizationUser_ReadCountByOrganizationOwnerUser] |
|
END |
|
GO |
|
|
|
IF OBJECT_ID('[dbo].[OrganizationUser_ReadCountByOnlyOwner]') IS NOT NULL |
|
BEGIN |
|
DROP PROCEDURE [dbo].[OrganizationUser_ReadCountByOnlyOwner] |
|
END |
|
GO |
|
|
|
CREATE PROCEDURE [dbo].[OrganizationUser_ReadCountByOnlyOwner] |
|
@UserId UNIQUEIDENTIFIER |
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
|
|
;WITH [OwnerCountCTE] AS |
|
( |
|
SELECT |
|
OU.[UserId], |
|
COUNT(1) OVER (PARTITION BY OU.[OrganizationId]) [ConfirmedOwnerCount] |
|
FROM |
|
[dbo].[OrganizationUser] OU |
|
WHERE |
|
OU.[Type] = 0 -- 0 = Owner |
|
AND OU.[Status] = 2 -- 2 = Confirmed |
|
) |
|
SELECT |
|
COUNT(1) |
|
FROM |
|
[OwnerCountCTE] OC |
|
WHERE |
|
OC.[UserId] = @UserId |
|
AND OC.[ConfirmedOwnerCount] = 1 |
|
END |
|
GO |
|
|
|
IF OBJECT_ID('[dbo].[User_DeleteById]') IS NOT NULL |
|
BEGIN |
|
DROP PROCEDURE [dbo].[User_DeleteById] |
|
END |
|
GO |
|
|
|
CREATE PROCEDURE [dbo].[User_DeleteById] |
|
@Id UNIQUEIDENTIFIER |
|
WITH RECOMPILE |
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
DECLARE @BatchSize INT = 100 |
|
|
|
-- Delete ciphers |
|
WHILE @BatchSize > 0 |
|
BEGIN |
|
BEGIN TRANSACTION User_DeleteById_Ciphers |
|
|
|
DELETE TOP(@BatchSize) |
|
FROM |
|
[dbo].[Cipher] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
SET @BatchSize = @@ROWCOUNT |
|
|
|
COMMIT TRANSACTION User_DeleteById_Ciphers |
|
END |
|
|
|
BEGIN TRANSACTION User_DeleteById |
|
|
|
-- Delete folders |
|
DELETE |
|
FROM |
|
[dbo].[Folder] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete devices |
|
DELETE |
|
FROM |
|
[dbo].[Device] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Delete collection users |
|
DELETE |
|
CU |
|
FROM |
|
[dbo].[CollectionUser] CU |
|
INNER JOIN |
|
[dbo].[OrganizationUser] OU ON OU.[Id] = CU.[OrganizationUserId] |
|
WHERE |
|
OU.[UserId] = @Id |
|
|
|
-- Delete group users |
|
DELETE |
|
GU |
|
FROM |
|
[dbo].[GroupUser] GU |
|
INNER JOIN |
|
[dbo].[OrganizationUser] OU ON OU.[Id] = GU.[OrganizationUserId] |
|
WHERE |
|
OU.[UserId] = @Id |
|
|
|
-- Delete organization users |
|
DELETE |
|
FROM |
|
[dbo].[OrganizationUser] |
|
WHERE |
|
[UserId] = @Id |
|
|
|
-- Finally, delete the user |
|
DELETE |
|
FROM |
|
[dbo].[User] |
|
WHERE |
|
[Id] = @Id |
|
|
|
COMMIT TRANSACTION User_DeleteById |
|
END |
|
GO |
|
|
|
IF COL_LENGTH('[dbo].[Organization]', 'BusinessAddress1') IS NULL |
|
BEGIN |
|
ALTER TABLE |
|
[dbo].[Organization] |
|
ADD |
|
[BusinessAddress1] NVARCHAR(50) NULL, |
|
[BusinessAddress2] NVARCHAR(50) NULL, |
|
[BusinessAddress3] NVARCHAR(50) NULL, |
|
[BusinessCountry] VARCHAR(2) NULL, |
|
[BusinessTaxNumber] NVARCHAR(30) NULL |
|
END |
|
GO |
|
|
|
IF OBJECT_ID('[dbo].[Organization_Create]') IS NOT NULL |
|
BEGIN |
|
DROP PROCEDURE [dbo].[Organization_Create] |
|
END |
|
GO |
|
|
|
CREATE PROCEDURE [dbo].[Organization_Create] |
|
@Id UNIQUEIDENTIFIER, |
|
@Name NVARCHAR(50), |
|
@BusinessName NVARCHAR(50), |
|
@BusinessAddress1 NVARCHAR(50), |
|
@BusinessAddress2 NVARCHAR(50), |
|
@BusinessAddress3 NVARCHAR(50), |
|
@BusinessCountry VARCHAR(2), |
|
@BusinessTaxNumber NVARCHAR(30), |
|
@BillingEmail NVARCHAR(50), |
|
@Plan NVARCHAR(50), |
|
@PlanType TINYINT, |
|
@Seats SMALLINT, |
|
@MaxCollections SMALLINT, |
|
@UseGroups BIT, |
|
@UseDirectory BIT, |
|
@UseTotp BIT, |
|
@SelfHost BIT, |
|
@Storage BIGINT, |
|
@MaxStorageGb SMALLINT, |
|
@Gateway TINYINT, |
|
@GatewayCustomerId VARCHAR(50), |
|
@GatewaySubscriptionId VARCHAR(50), |
|
@Enabled BIT, |
|
@LicenseKey VARCHAR(100), |
|
@ExpirationDate DATETIME2(7), |
|
@CreationDate DATETIME2(7), |
|
@RevisionDate DATETIME2(7) |
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
|
|
INSERT INTO [dbo].[Organization] |
|
( |
|
[Id], |
|
[Name], |
|
[BusinessName], |
|
[BusinessAddress1], |
|
[BusinessAddress2], |
|
[BusinessAddress3], |
|
[BusinessCountry], |
|
[BusinessTaxNumber], |
|
[BillingEmail], |
|
[Plan], |
|
[PlanType], |
|
[Seats], |
|
[MaxCollections], |
|
[UseGroups], |
|
[UseDirectory], |
|
[UseTotp], |
|
[SelfHost], |
|
[Storage], |
|
[MaxStorageGb], |
|
[Gateway], |
|
[GatewayCustomerId], |
|
[GatewaySubscriptionId], |
|
[Enabled], |
|
[LicenseKey], |
|
[ExpirationDate], |
|
[CreationDate], |
|
[RevisionDate] |
|
) |
|
VALUES |
|
( |
|
@Id, |
|
@Name, |
|
@BusinessName, |
|
@BusinessAddress1, |
|
@BusinessAddress2, |
|
@BusinessAddress3, |
|
@BusinessCountry, |
|
@BusinessTaxNumber, |
|
@BillingEmail, |
|
@Plan, |
|
@PlanType, |
|
@Seats, |
|
@MaxCollections, |
|
@UseGroups, |
|
@UseDirectory, |
|
@UseTotp, |
|
@SelfHost, |
|
@Storage, |
|
@MaxStorageGb, |
|
@Gateway, |
|
@GatewayCustomerId, |
|
@GatewaySubscriptionId, |
|
@Enabled, |
|
@LicenseKey, |
|
@ExpirationDate, |
|
@CreationDate, |
|
@RevisionDate |
|
) |
|
END |
|
GO |
|
|
|
IF OBJECT_ID('[dbo].[Organization_Update]') IS NOT NULL |
|
BEGIN |
|
DROP PROCEDURE [dbo].[Organization_Update] |
|
END |
|
GO |
|
|
|
CREATE PROCEDURE [dbo].[Organization_Update] |
|
@Id UNIQUEIDENTIFIER, |
|
@Name NVARCHAR(50), |
|
@BusinessName NVARCHAR(50), |
|
@BusinessAddress1 NVARCHAR(50), |
|
@BusinessAddress2 NVARCHAR(50), |
|
@BusinessAddress3 NVARCHAR(50), |
|
@BusinessCountry VARCHAR(2), |
|
@BusinessTaxNumber NVARCHAR(30), |
|
@BillingEmail NVARCHAR(50), |
|
@Plan NVARCHAR(50), |
|
@PlanType TINYINT, |
|
@Seats SMALLINT, |
|
@MaxCollections SMALLINT, |
|
@UseGroups BIT, |
|
@UseDirectory BIT, |
|
@UseTotp BIT, |
|
@SelfHost BIT, |
|
@Storage BIGINT, |
|
@MaxStorageGb SMALLINT, |
|
@Gateway TINYINT, |
|
@GatewayCustomerId VARCHAR(50), |
|
@GatewaySubscriptionId VARCHAR(50), |
|
@Enabled BIT, |
|
@LicenseKey VARCHAR(100), |
|
@ExpirationDate DATETIME2(7), |
|
@CreationDate DATETIME2(7), |
|
@RevisionDate DATETIME2(7) |
|
|
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
|
|
UPDATE |
|
[dbo].[Organization] |
|
SET |
|
[Name] = @Name, |
|
[BusinessName] = @BusinessName, |
|
[BusinessAddress1] = @BusinessAddress1, |
|
[BusinessAddress2] = @BusinessAddress2, |
|
[BusinessAddress3] = @BusinessAddress3, |
|
[BusinessCountry] = @BusinessCountry, |
|
[BusinessTaxNumber] = @BusinessTaxNumber, |
|
[BillingEmail] = @BillingEmail, |
|
[Plan] = @Plan, |
|
[PlanType] = @PlanType, |
|
[Seats] = @Seats, |
|
[MaxCollections] = @MaxCollections, |
|
[UseGroups] = @UseGroups, |
|
[UseDirectory] = @UseDirectory, |
|
[UseTotp] = @UseTotp, |
|
[SelfHost] = @SelfHost, |
|
[Storage] = @Storage, |
|
[MaxStorageGb] = @MaxStorageGb, |
|
[Gateway] = @Gateway, |
|
[GatewayCustomerId] = @GatewayCustomerId, |
|
[GatewaySubscriptionId] = @GatewaySubscriptionId, |
|
[Enabled] = @Enabled, |
|
[LicenseKey] = @LicenseKey, |
|
[ExpirationDate] = @ExpirationDate, |
|
[CreationDate] = @CreationDate, |
|
[RevisionDate] = @RevisionDate |
|
WHERE |
|
[Id] = @Id |
|
END |
|
GO |
|
|
|
IF OBJECT_ID('[dbo].[Cipher_DeleteByUserId]') IS NOT NULL |
|
BEGIN |
|
DROP PROCEDURE [dbo].[Cipher_DeleteByUserId] |
|
END |
|
GO |
|
|
|
CREATE PROCEDURE [dbo].[Cipher_DeleteByUserId] |
|
@UserId AS UNIQUEIDENTIFIER |
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
|
|
DECLARE @BatchSize INT = 100 |
|
|
|
-- Delete ciphers |
|
WHILE @BatchSize > 0 |
|
BEGIN |
|
BEGIN TRANSACTION Cipher_DeleteByUserId_Ciphers |
|
|
|
DELETE TOP(@BatchSize) |
|
FROM |
|
[dbo].[Cipher] |
|
WHERE |
|
[UserId] = @UserId |
|
|
|
SET @BatchSize = @@ROWCOUNT |
|
|
|
COMMIT TRANSACTION Cipher_DeleteByUserId_Ciphers |
|
END |
|
|
|
-- Cleanup user |
|
EXEC [dbo].[User_UpdateStorage] @UserId |
|
EXEC [dbo].[User_BumpAccountRevisionDate] @UserId |
|
END |
|
GO |
|
|
|
IF OBJECT_ID('[dbo].[Cipher_DeleteById]') IS NOT NULL |
|
BEGIN |
|
DROP PROCEDURE [dbo].[Cipher_DeleteById] |
|
END |
|
GO |
|
|
|
CREATE PROCEDURE [dbo].[Cipher_DeleteById] |
|
@Id UNIQUEIDENTIFIER |
|
WITH RECOMPILE |
|
AS |
|
BEGIN |
|
SET NOCOUNT ON |
|
|
|
DECLARE @UserId UNIQUEIDENTIFIER |
|
DECLARE @OrganizationId UNIQUEIDENTIFIER |
|
DECLARE @Attachments BIT |
|
|
|
SELECT TOP 1 |
|
@UserId = [UserId], |
|
@OrganizationId = [OrganizationId], |
|
@Attachments = CASE WHEN [Attachments] IS NOT NULL THEN 1 ELSE 0 END |
|
FROM |
|
[dbo].[Cipher] |
|
WHERE |
|
[Id] = @Id |
|
|
|
DELETE |
|
FROM |
|
[dbo].[Cipher] |
|
WHERE |
|
[Id] = @Id |
|
|
|
IF @OrganizationId IS NOT NULL |
|
BEGIN |
|
IF @Attachments = 1 |
|
BEGIN |
|
EXEC [dbo].[Organization_UpdateStorage] @OrganizationId |
|
END |
|
EXEC [dbo].[User_BumpAccountRevisionDateByOrganizationId] @OrganizationId |
|
END |
|
ELSE IF @UserId IS NOT NULL |
|
BEGIN |
|
IF @Attachments = 1 |
|
BEGIN |
|
EXEC [dbo].[User_UpdateStorage] @UserId |
|
END |
|
EXEC [dbo].[User_BumpAccountRevisionDate] @UserId |
|
END |
|
END |
|
GO
|
|
|