diff --git a/src/Api/Billing/Controllers/OrganizationSponsorshipsController.cs b/src/Api/Billing/Controllers/OrganizationSponsorshipsController.cs
index f2c2418bf5..21fad58c80 100644
--- a/src/Api/Billing/Controllers/OrganizationSponsorshipsController.cs
+++ b/src/Api/Billing/Controllers/OrganizationSponsorshipsController.cs
@@ -81,7 +81,10 @@ public class OrganizationSponsorshipsController : Controller
var sponsorship = await _createSponsorshipCommand.CreateSponsorshipAsync(
sponsoringOrg,
await _organizationUserRepository.GetByOrganizationAsync(sponsoringOrgId, targetUser),
- model.PlanSponsorshipType, model.SponsoredEmail, model.FriendlyName);
+ model.PlanSponsorshipType,
+ model.SponsoredEmail,
+ model.FriendlyName,
+ model.Notes);
await _sendSponsorshipOfferCommand.SendSponsorshipOfferAsync(sponsorship, sponsoringOrg.Name);
}
diff --git a/src/Api/Controllers/SelfHosted/SelfHostedOrganizationSponsorshipsController.cs b/src/Api/Controllers/SelfHosted/SelfHostedOrganizationSponsorshipsController.cs
index ffb5c7bb98..654860c24a 100644
--- a/src/Api/Controllers/SelfHosted/SelfHostedOrganizationSponsorshipsController.cs
+++ b/src/Api/Controllers/SelfHosted/SelfHostedOrganizationSponsorshipsController.cs
@@ -44,7 +44,7 @@ public class SelfHostedOrganizationSponsorshipsController : Controller
await _offerSponsorshipCommand.CreateSponsorshipAsync(
await _organizationRepository.GetByIdAsync(sponsoringOrgId),
await _organizationUserRepository.GetByOrganizationAsync(sponsoringOrgId, _currentContext.UserId ?? default),
- model.PlanSponsorshipType, model.SponsoredEmail, model.FriendlyName);
+ model.PlanSponsorshipType, model.SponsoredEmail, model.FriendlyName, model.Notes);
}
[HttpDelete("{sponsoringOrgId}")]
diff --git a/src/Api/Models/Request/Organizations/OrganizationSponsorshipCreateRequestModel.cs b/src/Api/Models/Request/Organizations/OrganizationSponsorshipCreateRequestModel.cs
index 9bdb8a3a16..3b2e873385 100644
--- a/src/Api/Models/Request/Organizations/OrganizationSponsorshipCreateRequestModel.cs
+++ b/src/Api/Models/Request/Organizations/OrganizationSponsorshipCreateRequestModel.cs
@@ -22,4 +22,6 @@ public class OrganizationSponsorshipCreateRequestModel
///
/// Left empty when creating a sponsorship for the authenticated user.
public Guid? SponsoringUserId { get; set; }
+
+ public string Notes { get; set; }
}
diff --git a/src/Core/Entities/OrganizationSponsorship.cs b/src/Core/Entities/OrganizationSponsorship.cs
index fa211b686e..0bb21d780b 100644
--- a/src/Core/Entities/OrganizationSponsorship.cs
+++ b/src/Core/Entities/OrganizationSponsorship.cs
@@ -21,6 +21,7 @@ public class OrganizationSponsorship : ITableObject
public DateTime? ValidUntil { get; set; }
public bool ToDelete { get; set; }
public bool IsAdminInitiated { get; set; }
+ public string? Notes { get; set; }
public void SetNewId()
{
diff --git a/src/Core/Models/Data/Organizations/OrganizationSponsorships/OrganizationSponsorshipData.cs b/src/Core/Models/Data/Organizations/OrganizationSponsorships/OrganizationSponsorshipData.cs
index df0d431ce0..649459bc6b 100644
--- a/src/Core/Models/Data/Organizations/OrganizationSponsorships/OrganizationSponsorshipData.cs
+++ b/src/Core/Models/Data/Organizations/OrganizationSponsorships/OrganizationSponsorshipData.cs
@@ -17,6 +17,7 @@ public class OrganizationSponsorshipData
ValidUntil = sponsorship.ValidUntil;
ToDelete = sponsorship.ToDelete;
IsAdminInitiated = sponsorship.IsAdminInitiated;
+ Notes = sponsorship.Notes;
}
public Guid SponsoringOrganizationUserId { get; set; }
public Guid? SponsoredOrganizationId { get; set; }
@@ -27,6 +28,7 @@ public class OrganizationSponsorshipData
public DateTime? ValidUntil { get; set; }
public bool ToDelete { get; set; }
public bool IsAdminInitiated { get; set; }
+ public string Notes { get; set; }
public bool CloudSponsorshipRemoved { get; set; }
}
diff --git a/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/CreateSponsorshipCommand.cs b/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/CreateSponsorshipCommand.cs
index f409fdc30d..a7591d0d45 100644
--- a/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/CreateSponsorshipCommand.cs
+++ b/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/CreateSponsorshipCommand.cs
@@ -28,9 +28,9 @@ public class CreateSponsorshipCommand : ICreateSponsorshipCommand
}
public async Task CreateSponsorshipAsync(Organization sponsoringOrg, OrganizationUser sponsoringOrgUser,
- PlanSponsorshipType sponsorshipType, string sponsoredEmail, string friendlyName)
+ PlanSponsorshipType sponsorshipType, string sponsoredEmail, string friendlyName, string notes)
{
- var createSponsorshipRequest = new CreateSponsorshipRequest(sponsoringOrg, sponsoringOrgUser, sponsorshipType, sponsoredEmail, friendlyName);
+ var createSponsorshipRequest = new CreateSponsorshipRequest(sponsoringOrg, sponsoringOrgUser, sponsorshipType, sponsoredEmail, friendlyName, notes);
var sponsorship = await _createSponsorshipHandler.HandleAsync(createSponsorshipRequest);
try
diff --git a/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/Interfaces/ICreateSponsorshipCommand.cs b/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/Interfaces/ICreateSponsorshipCommand.cs
index 8e3d055a79..4a3e5a63dc 100644
--- a/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/Interfaces/ICreateSponsorshipCommand.cs
+++ b/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/Interfaces/ICreateSponsorshipCommand.cs
@@ -7,5 +7,5 @@ namespace Bit.Core.OrganizationFeatures.OrganizationSponsorships.FamiliesForEnte
public interface ICreateSponsorshipCommand
{
Task CreateSponsorshipAsync(Organization sponsoringOrg, OrganizationUser sponsoringOrgUser,
- PlanSponsorshipType sponsorshipType, string sponsoredEmail, string friendlyName);
+ PlanSponsorshipType sponsorshipType, string sponsoredEmail, string friendlyName, string notes);
}
diff --git a/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/SponsorshipCreation/CreateAdminInitiatedSponsorshipHandler.cs b/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/SponsorshipCreation/CreateAdminInitiatedSponsorshipHandler.cs
index b8350316d6..e3d915fbff 100644
--- a/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/SponsorshipCreation/CreateAdminInitiatedSponsorshipHandler.cs
+++ b/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/SponsorshipCreation/CreateAdminInitiatedSponsorshipHandler.cs
@@ -40,6 +40,7 @@ public class CreateAdminInitiatedSponsorshipHandler(
var sponsorship = await base.HandleAsync(request) ?? new OrganizationSponsorship();
sponsorship.IsAdminInitiated = isAdminInitiated;
+ sponsorship.Notes = request.Notes;
return sponsorship;
}
diff --git a/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/SponsorshipCreation/CreateSponsorshipRequest.cs b/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/SponsorshipCreation/CreateSponsorshipRequest.cs
index a989474106..9c7ccfd672 100644
--- a/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/SponsorshipCreation/CreateSponsorshipRequest.cs
+++ b/src/Core/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/SponsorshipCreation/CreateSponsorshipRequest.cs
@@ -9,4 +9,5 @@ public record CreateSponsorshipRequest(
OrganizationUser SponsoringMember,
PlanSponsorshipType SponsorshipType,
string SponsoredEmail,
- string FriendlyName);
+ string FriendlyName,
+ string Notes);
diff --git a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Create.sql b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Create.sql
index f681a4f9e4..e79d8770b3 100644
--- a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Create.sql
+++ b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Create.sql
@@ -9,7 +9,8 @@ CREATE PROCEDURE [dbo].[OrganizationSponsorship_Create]
@ToDelete BIT,
@LastSyncDate DATETIME2 (7),
@ValidUntil DATETIME2 (7),
- @IsAdminInitiated BIT
+ @IsAdminInitiated BIT,
+ @Notes NVARCHAR(512)
AS
BEGIN
SET NOCOUNT ON
@@ -26,7 +27,8 @@ BEGIN
[ToDelete],
[LastSyncDate],
[ValidUntil],
- [IsAdminInitiated]
+ [IsAdminInitiated],
+ [Notes]
)
VALUES
(
@@ -40,7 +42,8 @@ BEGIN
@ToDelete,
@LastSyncDate,
@ValidUntil,
- @IsAdminInitiated
+ @IsAdminInitiated,
+ @Notes
)
END
GO
diff --git a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_CreateMany.sql b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_CreateMany.sql
index 61c71c872a..24ae4674a3 100644
--- a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_CreateMany.sql
+++ b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_CreateMany.sql
@@ -16,7 +16,8 @@ BEGIN
[ToDelete],
[LastSyncDate],
[ValidUntil],
- [IsAdminInitiated]
+ [IsAdminInitiated],
+ [Notes]
)
SELECT
OS.[Id],
@@ -29,7 +30,8 @@ BEGIN
OS.[ToDelete],
OS.[LastSyncDate],
OS.[ValidUntil],
- OS.[IsAdminInitiated]
+ OS.[IsAdminInitiated],
+ OS.[Notes]
FROM
@OrganizationSponsorshipsInput OS
END
diff --git a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Update.sql b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Update.sql
index 6c82c6cf18..d1c68319f4 100644
--- a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Update.sql
+++ b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_Update.sql
@@ -9,7 +9,8 @@ CREATE PROCEDURE [dbo].[OrganizationSponsorship_Update]
@ToDelete BIT,
@LastSyncDate DATETIME2 (7),
@ValidUntil DATETIME2 (7),
- @IsAdminInitiated BIT
+ @IsAdminInitiated BIT,
+ @Notes NVARCHAR(512)
AS
BEGIN
SET NOCOUNT ON
@@ -26,7 +27,8 @@ BEGIN
[ToDelete] = @ToDelete,
[LastSyncDate] = @LastSyncDate,
[ValidUntil] = @ValidUntil,
- [IsAdminInitiated] = @IsAdminInitiated
+ [IsAdminInitiated] = @IsAdminInitiated,
+ [Notes] = @Notes
WHERE
[Id] = @Id
END
diff --git a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_UpdateMany.sql b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_UpdateMany.sql
index c4321a86d2..cd8461cec9 100644
--- a/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_UpdateMany.sql
+++ b/src/Sql/dbo/Stored Procedures/OrganizationSponsorship_UpdateMany.sql
@@ -17,7 +17,8 @@ BEGIN
[ToDelete] = OSI.[ToDelete],
[LastSyncDate] = OSI.[LastSyncDate],
[ValidUntil] = OSI.[ValidUntil],
- [IsAdminInitiated] = OSI.[IsAdminInitiated]
+ [IsAdminInitiated] = OSI.[IsAdminInitiated],
+ [Notes] = OSI.[Notes]
FROM
[dbo].[OrganizationSponsorship] OS
INNER JOIN
diff --git a/src/Sql/dbo/Tables/OrganizationSponsorship.sql b/src/Sql/dbo/Tables/OrganizationSponsorship.sql
index b4526d5b65..c2aaeb088a 100644
--- a/src/Sql/dbo/Tables/OrganizationSponsorship.sql
+++ b/src/Sql/dbo/Tables/OrganizationSponsorship.sql
@@ -10,6 +10,7 @@ CREATE TABLE [dbo].[OrganizationSponsorship] (
[LastSyncDate] DATETIME2 (7) NULL,
[ValidUntil] DATETIME2 (7) NULL,
[IsAdminInitiated] BIT NOT NULL CONSTRAINT [DF_OrganizationSponsorship_IsAdminInitiated] DEFAULT (0),
+ [Notes] NVARCHAR(512) NULL,
CONSTRAINT [PK_OrganizationSponsorship] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_OrganizationSponsorship_SponsoringOrg] FOREIGN KEY ([SponsoringOrganizationId]) REFERENCES [dbo].[Organization] ([Id]),
CONSTRAINT [FK_OrganizationSponsorship_SponsoredOrg] FOREIGN KEY ([SponsoredOrganizationId]) REFERENCES [dbo].[Organization] ([Id]),
diff --git a/src/Sql/dbo/User Defined Types/OrganizationSponsorshipType.sql b/src/Sql/dbo/User Defined Types/OrganizationSponsorshipType.sql
index 00080cad5d..0df4eadbb8 100644
--- a/src/Sql/dbo/User Defined Types/OrganizationSponsorshipType.sql
+++ b/src/Sql/dbo/User Defined Types/OrganizationSponsorshipType.sql
@@ -9,5 +9,6 @@ CREATE TYPE [dbo].[OrganizationSponsorshipType] AS TABLE(
[LastSyncDate] DATETIME2(7),
[ValidUntil] DATETIME2(7),
[ToDelete] BIT,
- [IsAdminInitiated] BIT
+ [IsAdminInitiated] BIT,
+ [Notes] NVARCHAR(512)
)
diff --git a/test/Core.Test/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/CreateSponsorshipCommandTests.cs b/test/Core.Test/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/CreateSponsorshipCommandTests.cs
index 4fadafb2c3..6fe4e8bb3c 100644
--- a/test/Core.Test/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/CreateSponsorshipCommandTests.cs
+++ b/test/Core.Test/OrganizationFeatures/OrganizationSponsorships/FamiliesForEnterprise/CreateSponsorshipCommandTests.cs
@@ -41,7 +41,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
sutProvider.GetDependency().GetUserByIdAsync(orgUser.UserId.Value).ReturnsNull();
var exception = await Assert.ThrowsAsync(() =>
- sutProvider.Sut.CreateSponsorshipAsync(null, orgUser, PlanSponsorshipType.FamiliesForEnterprise, default, default));
+ sutProvider.Sut.CreateSponsorshipAsync(null, orgUser, PlanSponsorshipType.FamiliesForEnterprise, default, default, null));
Assert.Contains("Cannot offer a Families Organization Sponsorship to yourself. Choose a different email.", exception.Message);
await sutProvider.GetDependency().DidNotReceiveWithAnyArgs()
@@ -55,7 +55,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
sutProvider.GetDependency().GetUserByIdAsync(orgUser.UserId.Value).Returns(user);
var exception = await Assert.ThrowsAsync(() =>
- sutProvider.Sut.CreateSponsorshipAsync(null, orgUser, PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, default));
+ sutProvider.Sut.CreateSponsorshipAsync(null, orgUser, PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, default, null));
Assert.Contains("Cannot offer a Families Organization Sponsorship to yourself. Choose a different email.", exception.Message);
await sutProvider.GetDependency().DidNotReceiveWithAnyArgs()
@@ -72,7 +72,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
sutProvider.GetDependency().GetUserByIdAsync(orgUser.UserId.Value).Returns(user);
var exception = await Assert.ThrowsAsync(() =>
- sutProvider.Sut.CreateSponsorshipAsync(org, orgUser, PlanSponsorshipType.FamiliesForEnterprise, default, default));
+ sutProvider.Sut.CreateSponsorshipAsync(org, orgUser, PlanSponsorshipType.FamiliesForEnterprise, default, default, null));
Assert.Contains("Specified Organization cannot sponsor other organizations.", exception.Message);
await sutProvider.GetDependency().DidNotReceiveWithAnyArgs()
@@ -91,7 +91,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
sutProvider.GetDependency().GetUserByIdAsync(orgUser.UserId.Value).Returns(user);
var exception = await Assert.ThrowsAsync(() =>
- sutProvider.Sut.CreateSponsorshipAsync(org, orgUser, PlanSponsorshipType.FamiliesForEnterprise, default, default));
+ sutProvider.Sut.CreateSponsorshipAsync(org, orgUser, PlanSponsorshipType.FamiliesForEnterprise, default, default, null));
Assert.Contains("Only confirmed users can sponsor other organizations.", exception.Message);
await sutProvider.GetDependency().DidNotReceiveWithAnyArgs()
@@ -115,7 +115,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
sutProvider.GetDependency().UserId.Returns(orgUser.UserId.Value);
var exception = await Assert.ThrowsAsync(() =>
- sutProvider.Sut.CreateSponsorshipAsync(org, orgUser, sponsorship.PlanSponsorshipType.Value, default, default));
+ sutProvider.Sut.CreateSponsorshipAsync(org, orgUser, sponsorship.PlanSponsorshipType.Value, default, default, null));
Assert.Contains("Can only sponsor one organization per Organization User.", exception.Message);
await sutProvider.GetDependency().DidNotReceiveWithAnyArgs()
@@ -140,7 +140,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
await sutProvider.Sut.CreateSponsorshipAsync(sponsoringOrg, sponsoringOrgUser,
- PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, friendlyName);
+ PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, friendlyName, null);
var expectedSponsorship = new OrganizationSponsorship
{
@@ -150,7 +150,8 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
FriendlyName = friendlyName,
OfferedToEmail = sponsoredEmail,
PlanSponsorshipType = PlanSponsorshipType.FamiliesForEnterprise,
- IsAdminInitiated = false
+ IsAdminInitiated = false,
+ Notes = null
};
await sutProvider.GetDependency().Received(1)
@@ -178,7 +179,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
var actualException = await Assert.ThrowsAsync(() =>
sutProvider.Sut.CreateSponsorshipAsync(sponsoringOrg, sponsoringOrgUser,
- PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, friendlyName));
+ PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, friendlyName, null));
Assert.Same(expectedException, actualException);
await sutProvider.GetDependency().Received(1)
@@ -213,7 +214,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
var actual = await Assert.ThrowsAsync(async () =>
await sutProvider.Sut.CreateSponsorshipAsync(sponsoringOrg, sponsoringOrgUser,
- PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, friendlyName));
+ PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, friendlyName, null));
Assert.Equal("You do not have permissions to send sponsorships on behalf of the organization.", actual.Message);
}
@@ -250,7 +251,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
var actual = await Assert.ThrowsAsync(async () =>
await sutProvider.Sut.CreateSponsorshipAsync(sponsoringOrg, sponsoringOrgUser,
- PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, friendlyName));
+ PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, friendlyName, null));
Assert.Equal("You do not have permissions to send sponsorships on behalf of the organization.", actual.Message);
}
@@ -262,7 +263,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
public async Task CreateSponsorship_CreatesAdminInitiatedSponsorship(
OrganizationUserType organizationUserType,
Organization sponsoringOrg, OrganizationUser sponsoringOrgUser, User user, string sponsoredEmail,
- string friendlyName, Guid sponsorshipId, Guid currentUserId, SutProvider sutProvider)
+ string friendlyName, Guid sponsorshipId, Guid currentUserId, string notes, SutProvider sutProvider)
{
sponsoringOrg.PlanType = PlanType.EnterpriseAnnually;
sponsoringOrgUser.Status = OrganizationUserStatusType.Confirmed;
@@ -287,7 +288,7 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
]);
await sutProvider.Sut.CreateSponsorshipAsync(sponsoringOrg, sponsoringOrgUser,
- PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, friendlyName);
+ PlanSponsorshipType.FamiliesForEnterprise, sponsoredEmail, friendlyName, notes);
var expectedSponsorship = new OrganizationSponsorship
@@ -298,7 +299,8 @@ public class CreateSponsorshipCommandTests : FamiliesForEnterpriseTestsBase
FriendlyName = friendlyName,
OfferedToEmail = sponsoredEmail,
PlanSponsorshipType = PlanSponsorshipType.FamiliesForEnterprise,
- IsAdminInitiated = true
+ IsAdminInitiated = true,
+ Notes = notes
};
await sutProvider.GetDependency().Received(1)
diff --git a/util/Migrator/DbScripts/2025-03-14_00_AddUseAdminInitiatedSponsorship.sql b/util/Migrator/DbScripts/2025-03-14_00_AddUseAdminInitiatedSponsorship.sql
index 89d48c0cf8..f3c120d75c 100644
--- a/util/Migrator/DbScripts/2025-03-14_00_AddUseAdminInitiatedSponsorship.sql
+++ b/util/Migrator/DbScripts/2025-03-14_00_AddUseAdminInitiatedSponsorship.sql
@@ -364,7 +364,8 @@ CREATE OR ALTER PROCEDURE [dbo].[OrganizationSponsorship_Update]
@ToDelete BIT,
@LastSyncDate DATETIME2 (7),
@ValidUntil DATETIME2 (7),
- @IsAdminInitiated BIT
+ @IsAdminInitiated BIT,
+ @Notes NVARCHAR(512)
AS
BEGIN
SET NOCOUNT ON
@@ -381,7 +382,8 @@ SET
[ToDelete] = @ToDelete,
[LastSyncDate] = @LastSyncDate,
[ValidUntil] = @ValidUntil,
- [IsAdminInitiated] = @IsAdminInitiated
+ [IsAdminInitiated] = @IsAdminInitiated,
+ [Notes] = @Notes
WHERE
[Id] = @Id
END
@@ -398,7 +400,8 @@ CREATE OR ALTER PROCEDURE [dbo].[OrganizationSponsorship_Create]
@ToDelete BIT,
@LastSyncDate DATETIME2 (7),
@ValidUntil DATETIME2 (7),
- @IsAdminInitiated BIT
+ @IsAdminInitiated BIT,
+ @Notes NVARCHAR(512)
AS
BEGIN
SET NOCOUNT ON
@@ -415,7 +418,8 @@ BEGIN
[ToDelete],
[LastSyncDate],
[ValidUntil],
- [IsAdminInitiated]
+ [IsAdminInitiated],
+ [Notes]
)
VALUES
(
@@ -429,7 +433,8 @@ BEGIN
@ToDelete,
@LastSyncDate,
@ValidUntil,
- @IsAdminInitiated
+ @IsAdminInitiated,
+ @Notes
)
END
GO;
@@ -449,7 +454,8 @@ CREATE TYPE [dbo].[OrganizationSponsorshipType] AS TABLE(
[LastSyncDate] DATETIME2(7),
[ValidUntil] DATETIME2(7),
[ToDelete] BIT,
- [IsAdminInitiated] BIT
+ [IsAdminInitiated] BIT,
+ [Notes] NVARCHAR(512)
);
GO;
@@ -471,7 +477,8 @@ BEGIN
[ToDelete],
[LastSyncDate],
[ValidUntil],
- [IsAdminInitiated]
+ [IsAdminInitiated],
+ [Notes]
)
SELECT
OS.[Id],
@@ -484,7 +491,8 @@ SELECT
OS.[ToDelete],
OS.[LastSyncDate],
OS.[ValidUntil],
- OS.[IsAdminInitiated]
+ OS.[IsAdminInitiated],
+ OS.[Notes]
FROM
@OrganizationSponsorshipsInput OS
END
@@ -509,7 +517,8 @@ SET
[ToDelete] = OSI.[ToDelete],
[LastSyncDate] = OSI.[LastSyncDate],
[ValidUntil] = OSI.[ValidUntil],
- [IsAdminInitiated] = OSI.[IsAdminInitiated]
+ [IsAdminInitiated] = OSI.[IsAdminInitiated],
+ [Notes] = OSI.[Notes]
FROM
[dbo].[OrganizationSponsorship] OS
INNER JOIN
diff --git a/util/MySqlMigrations/Migrations/20250312084349_PM17830_AdminInitiatedSponsorships.Designer.cs b/util/MySqlMigrations/Migrations/20250326092653_PM17830_AdminInitiatedSponsorships.Designer.cs
similarity index 99%
rename from util/MySqlMigrations/Migrations/20250312084349_PM17830_AdminInitiatedSponsorships.Designer.cs
rename to util/MySqlMigrations/Migrations/20250326092653_PM17830_AdminInitiatedSponsorships.Designer.cs
index 8dc9236fe3..ff9f22a15a 100644
--- a/util/MySqlMigrations/Migrations/20250312084349_PM17830_AdminInitiatedSponsorships.Designer.cs
+++ b/util/MySqlMigrations/Migrations/20250326092653_PM17830_AdminInitiatedSponsorships.Designer.cs
@@ -12,7 +12,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace Bit.MySqlMigrations.Migrations
{
[DbContext(typeof(DatabaseContext))]
- [Migration("20250312084349_PM17830_AdminInitiatedSponsorships")]
+ [Migration("20250326092653_PM17830_AdminInitiatedSponsorships")]
partial class PM17830_AdminInitiatedSponsorships
{
///
@@ -1261,6 +1261,9 @@ namespace Bit.MySqlMigrations.Migrations
b.Property("LastSyncDate")
.HasColumnType("datetime(6)");
+ b.Property("Notes")
+ .HasColumnType("longtext");
+
b.Property("OfferedToEmail")
.HasMaxLength(256)
.HasColumnType("varchar(256)");
diff --git a/util/MySqlMigrations/Migrations/20250312084349_PM17830_AdminInitiatedSponsorships.cs b/util/MySqlMigrations/Migrations/20250326092653_PM17830_AdminInitiatedSponsorships.cs
similarity index 76%
rename from util/MySqlMigrations/Migrations/20250312084349_PM17830_AdminInitiatedSponsorships.cs
rename to util/MySqlMigrations/Migrations/20250326092653_PM17830_AdminInitiatedSponsorships.cs
index f37c2f30f4..11b2ca5dfa 100644
--- a/util/MySqlMigrations/Migrations/20250312084349_PM17830_AdminInitiatedSponsorships.cs
+++ b/util/MySqlMigrations/Migrations/20250326092653_PM17830_AdminInitiatedSponsorships.cs
@@ -17,6 +17,13 @@ public partial class PM17830_AdminInitiatedSponsorships : Migration
nullable: false,
defaultValue: false);
+ migrationBuilder.AddColumn(
+ name: "Notes",
+ table: "OrganizationSponsorship",
+ type: "longtext",
+ nullable: true)
+ .Annotation("MySql:CharSet", "utf8mb4");
+
migrationBuilder.AddColumn(
name: "UseAdminSponsoredFamilies",
table: "Organization",
@@ -32,6 +39,10 @@ public partial class PM17830_AdminInitiatedSponsorships : Migration
name: "IsAdminInitiated",
table: "OrganizationSponsorship");
+ migrationBuilder.DropColumn(
+ name: "Notes",
+ table: "OrganizationSponsorship");
+
migrationBuilder.DropColumn(
name: "UseAdminSponsoredFamilies",
table: "Organization");
diff --git a/util/MySqlMigrations/Migrations/DatabaseContextModelSnapshot.cs b/util/MySqlMigrations/Migrations/DatabaseContextModelSnapshot.cs
index ba6a46c96d..92c88e3ca5 100644
--- a/util/MySqlMigrations/Migrations/DatabaseContextModelSnapshot.cs
+++ b/util/MySqlMigrations/Migrations/DatabaseContextModelSnapshot.cs
@@ -1258,6 +1258,9 @@ namespace Bit.MySqlMigrations.Migrations
b.Property("LastSyncDate")
.HasColumnType("datetime(6)");
+ b.Property("Notes")
+ .HasColumnType("longtext");
+
b.Property("OfferedToEmail")
.HasMaxLength(256)
.HasColumnType("varchar(256)");
diff --git a/util/PostgresMigrations/Migrations/20250312084357_PM17830_AdminInitiatedSponsorships.Designer.cs b/util/PostgresMigrations/Migrations/20250326092700_PM17830_AdminInitiatedSponsorships.Designer.cs
similarity index 99%
rename from util/PostgresMigrations/Migrations/20250312084357_PM17830_AdminInitiatedSponsorships.Designer.cs
rename to util/PostgresMigrations/Migrations/20250326092700_PM17830_AdminInitiatedSponsorships.Designer.cs
index a5883a7f9e..e55146fa30 100644
--- a/util/PostgresMigrations/Migrations/20250312084357_PM17830_AdminInitiatedSponsorships.Designer.cs
+++ b/util/PostgresMigrations/Migrations/20250326092700_PM17830_AdminInitiatedSponsorships.Designer.cs
@@ -12,7 +12,7 @@ using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata;
namespace Bit.PostgresMigrations.Migrations
{
[DbContext(typeof(DatabaseContext))]
- [Migration("20250312084357_PM17830_AdminInitiatedSponsorships")]
+ [Migration("20250326092700_PM17830_AdminInitiatedSponsorships")]
partial class PM17830_AdminInitiatedSponsorships
{
///
@@ -1266,6 +1266,9 @@ namespace Bit.PostgresMigrations.Migrations
b.Property("LastSyncDate")
.HasColumnType("timestamp with time zone");
+ b.Property("Notes")
+ .HasColumnType("text");
+
b.Property("OfferedToEmail")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
diff --git a/util/PostgresMigrations/Migrations/20250312084357_PM17830_AdminInitiatedSponsorships.cs b/util/PostgresMigrations/Migrations/20250326092700_PM17830_AdminInitiatedSponsorships.cs
similarity index 79%
rename from util/PostgresMigrations/Migrations/20250312084357_PM17830_AdminInitiatedSponsorships.cs
rename to util/PostgresMigrations/Migrations/20250326092700_PM17830_AdminInitiatedSponsorships.cs
index 8b6ce63859..4507686e8f 100644
--- a/util/PostgresMigrations/Migrations/20250312084357_PM17830_AdminInitiatedSponsorships.cs
+++ b/util/PostgresMigrations/Migrations/20250326092700_PM17830_AdminInitiatedSponsorships.cs
@@ -17,6 +17,12 @@ public partial class PM17830_AdminInitiatedSponsorships : Migration
nullable: false,
defaultValue: false);
+ migrationBuilder.AddColumn(
+ name: "Notes",
+ table: "OrganizationSponsorship",
+ type: "text",
+ nullable: true);
+
migrationBuilder.AddColumn(
name: "UseAdminSponsoredFamilies",
table: "Organization",
@@ -32,6 +38,10 @@ public partial class PM17830_AdminInitiatedSponsorships : Migration
name: "IsAdminInitiated",
table: "OrganizationSponsorship");
+ migrationBuilder.DropColumn(
+ name: "Notes",
+ table: "OrganizationSponsorship");
+
migrationBuilder.DropColumn(
name: "UseAdminSponsoredFamilies",
table: "Organization");
diff --git a/util/PostgresMigrations/Migrations/DatabaseContextModelSnapshot.cs b/util/PostgresMigrations/Migrations/DatabaseContextModelSnapshot.cs
index 6ddd04add8..be4e68d840 100644
--- a/util/PostgresMigrations/Migrations/DatabaseContextModelSnapshot.cs
+++ b/util/PostgresMigrations/Migrations/DatabaseContextModelSnapshot.cs
@@ -1263,6 +1263,9 @@ namespace Bit.PostgresMigrations.Migrations
b.Property("LastSyncDate")
.HasColumnType("timestamp with time zone");
+ b.Property("Notes")
+ .HasColumnType("text");
+
b.Property("OfferedToEmail")
.HasMaxLength(256)
.HasColumnType("character varying(256)");
diff --git a/util/SqliteMigrations/Migrations/20250312084403_PM17830_AdminInitiatedSponsorships.Designer.cs b/util/SqliteMigrations/Migrations/20250326092645_PM17830_AdminInitiatedSponsorships.Designer.cs
similarity index 99%
rename from util/SqliteMigrations/Migrations/20250312084403_PM17830_AdminInitiatedSponsorships.Designer.cs
rename to util/SqliteMigrations/Migrations/20250326092645_PM17830_AdminInitiatedSponsorships.Designer.cs
index df5db8b8ca..4cdb9e514f 100644
--- a/util/SqliteMigrations/Migrations/20250312084403_PM17830_AdminInitiatedSponsorships.Designer.cs
+++ b/util/SqliteMigrations/Migrations/20250326092645_PM17830_AdminInitiatedSponsorships.Designer.cs
@@ -11,7 +11,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
namespace Bit.SqliteMigrations.Migrations
{
[DbContext(typeof(DatabaseContext))]
- [Migration("20250312084403_PM17830_AdminInitiatedSponsorships")]
+ [Migration("20250326092645_PM17830_AdminInitiatedSponsorships")]
partial class PM17830_AdminInitiatedSponsorships
{
///
@@ -1250,6 +1250,9 @@ namespace Bit.SqliteMigrations.Migrations
b.Property("LastSyncDate")
.HasColumnType("TEXT");
+ b.Property("Notes")
+ .HasColumnType("TEXT");
+
b.Property("OfferedToEmail")
.HasMaxLength(256)
.HasColumnType("TEXT");
diff --git a/util/SqliteMigrations/Migrations/20250312084403_PM17830_AdminInitiatedSponsorships.cs b/util/SqliteMigrations/Migrations/20250326092645_PM17830_AdminInitiatedSponsorships.cs
similarity index 79%
rename from util/SqliteMigrations/Migrations/20250312084403_PM17830_AdminInitiatedSponsorships.cs
rename to util/SqliteMigrations/Migrations/20250326092645_PM17830_AdminInitiatedSponsorships.cs
index 64fc52651c..5d28771b4c 100644
--- a/util/SqliteMigrations/Migrations/20250312084403_PM17830_AdminInitiatedSponsorships.cs
+++ b/util/SqliteMigrations/Migrations/20250326092645_PM17830_AdminInitiatedSponsorships.cs
@@ -17,6 +17,12 @@ public partial class PM17830_AdminInitiatedSponsorships : Migration
nullable: false,
defaultValue: false);
+ migrationBuilder.AddColumn(
+ name: "Notes",
+ table: "OrganizationSponsorship",
+ type: "TEXT",
+ nullable: true);
+
migrationBuilder.AddColumn(
name: "UseAdminSponsoredFamilies",
table: "Organization",
@@ -32,6 +38,10 @@ public partial class PM17830_AdminInitiatedSponsorships : Migration
name: "IsAdminInitiated",
table: "OrganizationSponsorship");
+ migrationBuilder.DropColumn(
+ name: "Notes",
+ table: "OrganizationSponsorship");
+
migrationBuilder.DropColumn(
name: "UseAdminSponsoredFamilies",
table: "Organization");
diff --git a/util/SqliteMigrations/Migrations/DatabaseContextModelSnapshot.cs b/util/SqliteMigrations/Migrations/DatabaseContextModelSnapshot.cs
index 71bf12bee2..2dab5acaf7 100644
--- a/util/SqliteMigrations/Migrations/DatabaseContextModelSnapshot.cs
+++ b/util/SqliteMigrations/Migrations/DatabaseContextModelSnapshot.cs
@@ -1247,6 +1247,9 @@ namespace Bit.SqliteMigrations.Migrations
b.Property("LastSyncDate")
.HasColumnType("TEXT");
+ b.Property("Notes")
+ .HasColumnType("TEXT");
+
b.Property("OfferedToEmail")
.HasMaxLength(256)
.HasColumnType("TEXT");