diff --git a/src/Core/Entities/Provider/Provider.cs b/src/Core/Entities/Provider/Provider.cs index 440be7d434..82b1f727e4 100644 --- a/src/Core/Entities/Provider/Provider.cs +++ b/src/Core/Entities/Provider/Provider.cs @@ -14,8 +14,10 @@ public class Provider : ITableObject public string BusinessCountry { get; set; } public string BusinessTaxNumber { get; set; } public string BillingEmail { get; set; } + public string BillingPhone { get; set; } public ProviderStatusType Status { get; set; } public bool UseEvents { get; set; } + public ProviderType Type { get; set; } public bool Enabled { get; set; } = true; public DateTime CreationDate { get; internal set; } = DateTime.UtcNow; public DateTime RevisionDate { get; internal set; } = DateTime.UtcNow; diff --git a/src/Core/Enums/Provider/ProviderType.cs b/src/Core/Enums/Provider/ProviderType.cs new file mode 100644 index 0000000000..8cced3b585 --- /dev/null +++ b/src/Core/Enums/Provider/ProviderType.cs @@ -0,0 +1,7 @@ +namespace Bit.Core.Enums.Provider; + +public enum ProviderType : byte +{ + Msp = 0, + Reseller = 1, +} diff --git a/src/Sql/dbo/Stored Procedures/Provider_Create.sql b/src/Sql/dbo/Stored Procedures/Provider_Create.sql index 2d0a8d4b42..f358a4b8bb 100644 --- a/src/Sql/dbo/Stored Procedures/Provider_Create.sql +++ b/src/Sql/dbo/Stored Procedures/Provider_Create.sql @@ -8,7 +8,9 @@ @BusinessCountry VARCHAR(2), @BusinessTaxNumber NVARCHAR(30), @BillingEmail NVARCHAR(256), + @BillingPhone NVARCHAR(50), @Status TINYINT, + @Type TINYINT, @UseEvents BIT, @Enabled BIT, @CreationDate DATETIME2(7), @@ -28,7 +30,9 @@ BEGIN [BusinessCountry], [BusinessTaxNumber], [BillingEmail], + [BillingPhone], [Status], + [Type], [UseEvents], [Enabled], [CreationDate], @@ -45,7 +49,9 @@ BEGIN @BusinessCountry, @BusinessTaxNumber, @BillingEmail, + @BillingPhone, @Status, + @Type, @UseEvents, @Enabled, @CreationDate, diff --git a/src/Sql/dbo/Stored Procedures/Provider_Update.sql b/src/Sql/dbo/Stored Procedures/Provider_Update.sql index 309c09f08b..8a0cb3bae3 100644 --- a/src/Sql/dbo/Stored Procedures/Provider_Update.sql +++ b/src/Sql/dbo/Stored Procedures/Provider_Update.sql @@ -8,7 +8,9 @@ @BusinessCountry VARCHAR(2), @BusinessTaxNumber NVARCHAR(30), @BillingEmail NVARCHAR(256), + @BillingPhone NVARCHAR(50), @Status TINYINT, + @Type TINYINT, @UseEvents BIT, @Enabled BIT, @CreationDate DATETIME2(7), @@ -28,7 +30,9 @@ BEGIN [BusinessCountry] = @BusinessCountry, [BusinessTaxNumber] = @BusinessTaxNumber, [BillingEmail] = @BillingEmail, + [BillingPhone] = @BillingPhone, [Status] = @Status, + [Type] = @Type, [UseEvents] = @UseEvents, [Enabled] = @Enabled, [CreationDate] = @CreationDate, diff --git a/src/Sql/dbo/Tables/Provider.sql b/src/Sql/dbo/Tables/Provider.sql index 8185971bd2..53269cdfa6 100644 --- a/src/Sql/dbo/Tables/Provider.sql +++ b/src/Sql/dbo/Tables/Provider.sql @@ -8,8 +8,10 @@ [BusinessCountry] VARCHAR (2) NULL, [BusinessTaxNumber] NVARCHAR (30) NULL, [BillingEmail] NVARCHAR (256) NULL, + [BillingPhone] NVARCHAR (50) NULL, [Status] TINYINT NOT NULL, [UseEvents] BIT NOT NULL, + [Type] TINYINT NOT NULL, [Enabled] BIT NOT NULL, [CreationDate] DATETIME2 (7) NOT NULL, [RevisionDate] DATETIME2 (7) NOT NULL, diff --git a/src/Sql/dbo/Views/ProviderUserProviderDetailsView.sql b/src/Sql/dbo/Views/ProviderUserProviderDetailsView.sql index 07c8e95a9f..5821356059 100644 --- a/src/Sql/dbo/Views/ProviderUserProviderDetailsView.sql +++ b/src/Sql/dbo/Views/ProviderUserProviderDetailsView.sql @@ -10,7 +10,8 @@ SELECT P.[Enabled], PU.[Permissions], P.[UseEvents], - P.[Status] ProviderStatus + P.[Status] ProviderStatus, + P.[Type] ProviderType FROM [dbo].[ProviderUser] PU LEFT JOIN diff --git a/util/Migrator/DbScripts/2022-12-26_00_ProviderAddProviderTypeBillingPhone.sql b/util/Migrator/DbScripts/2022-12-26_00_ProviderAddProviderTypeBillingPhone.sql new file mode 100644 index 0000000000..ae97c96d2f --- /dev/null +++ b/util/Migrator/DbScripts/2022-12-26_00_ProviderAddProviderTypeBillingPhone.sql @@ -0,0 +1,178 @@ +-- Add column 'Type' to 'Provider' table +IF COL_LENGTH('[dbo].[Provider]', 'Type') IS NULL +BEGIN + ALTER TABLE + [dbo].[Provider] + ADD + [Type] TINYINT NULL +END +GO + +-- Setting existing Providers Type = 0 (MSP) +UPDATE [dbo].[Provider] +SET [Type] = 0 +WHERE [Type] = NULL +GO + +-- Changing 'Type' column to not null +ALTER TABLE [dbo].[Provider] ALTER COLUMN [Type] TINYINT NOT NULL +GO + +-- Add column 'BillingPhone' to 'Provider' table +IF COL_LENGTH('[dbo].[Provider]', 'BillingPhone') IS NULL +BEGIN + ALTER TABLE + [dbo].[Provider] + ADD + [BillingPhone] NVARCHAR (50) NULL +END +GO + +-- Recreate ProviderView so that it includes the new columns 'Type' and 'BillingPhone' +IF EXISTS(SELECT * FROM sys.views WHERE [Name] = 'ProviderView') + BEGIN + DROP VIEW [dbo].[ProviderView] + END +GO + +CREATE VIEW [dbo].[ProviderView] +AS +SELECT + * +FROM + [dbo].[Provider] +GO + +-- Recreate ProviderUserProviderDetailsView so that it includes the new columns 'Type' and 'BillingPhone' +IF EXISTS(SELECT * FROM sys.views WHERE [Name] = 'ProviderUserProviderDetailsView') + BEGIN + DROP VIEW [dbo].[ProviderUserProviderDetailsView] + END +GO + +CREATE VIEW [dbo].[ProviderUserProviderDetailsView] +AS +SELECT + PU.[UserId], + PU.[ProviderId], + P.[Name], + PU.[Key], + PU.[Status], + PU.[Type], + P.[Enabled], + PU.[Permissions], + P.[UseEvents], + P.[Status] ProviderStatus, + P.[Type] ProviderType +FROM + [dbo].[ProviderUser] PU + LEFT JOIN + [dbo].[Provider] P ON P.[Id] = PU.[ProviderId] +GO + +-- Alter Provider_Create view to add new columns 'Type' and 'BillingPhone' +ALTER PROCEDURE [dbo].[Provider_Create] + @Id UNIQUEIDENTIFIER OUTPUT, + @Name NVARCHAR(50), + @BusinessName NVARCHAR(50), + @BusinessAddress1 NVARCHAR(50), + @BusinessAddress2 NVARCHAR(50), + @BusinessAddress3 NVARCHAR(50), + @BusinessCountry VARCHAR(2), + @BusinessTaxNumber NVARCHAR(30), + @BillingEmail NVARCHAR(256), + @BillingPhone NVARCHAR(50), + @Status TINYINT, + @Type TINYINT, + @UseEvents BIT, + @Enabled BIT, + @CreationDate DATETIME2(7), + @RevisionDate DATETIME2(7) +AS +BEGIN + SET NOCOUNT ON + + INSERT INTO [dbo].[Provider] + ( + [Id], + [Name], + [BusinessName], + [BusinessAddress1], + [BusinessAddress2], + [BusinessAddress3], + [BusinessCountry], + [BusinessTaxNumber], + [BillingEmail], + [BillingPhone], + [Status], + [Type], + [UseEvents], + [Enabled], + [CreationDate], + [RevisionDate] + ) + VALUES + ( + @Id, + @Name, + @BusinessName, + @BusinessAddress1, + @BusinessAddress2, + @BusinessAddress3, + @BusinessCountry, + @BusinessTaxNumber, + @BillingEmail, + @BillingPhone, + @Status, + @Type, + @UseEvents, + @Enabled, + @CreationDate, + @RevisionDate + ) +END +GO + +-- Alter Provider_Update view to add new columns 'Type' and 'BillingPhone' +ALTER PROCEDURE [dbo].[Provider_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(256), + @BillingPhone NVARCHAR(50), + @Status TINYINT, + @Type TINYINT, + @UseEvents BIT, + @Enabled BIT, + @CreationDate DATETIME2(7), + @RevisionDate DATETIME2(7) +AS +BEGIN + SET NOCOUNT ON + +UPDATE + [dbo].[Provider] +SET + [Name] = @Name, + [BusinessName] = @BusinessName, + [BusinessAddress1] = @BusinessAddress1, + [BusinessAddress2] = @BusinessAddress2, + [BusinessAddress3] = @BusinessAddress3, + [BusinessCountry] = @BusinessCountry, + [BusinessTaxNumber] = @BusinessTaxNumber, + [BillingEmail] = @BillingEmail, + [BillingPhone] = @BillingPhone, + [Status] = @Status, + [Type] = @Type, + [UseEvents] = @UseEvents, + [Enabled] = @Enabled, + [CreationDate] = @CreationDate, + [RevisionDate] = @RevisionDate +WHERE + [Id] = @Id +END