From 629b37b7e2d7280d5cb90dd58ed6df6fe140fae6 Mon Sep 17 00:00:00 2001 From: Alex Morask <144709477+amorask-bitwarden@users.noreply.github.com> Date: Thu, 2 Nov 2023 15:55:19 -0400 Subject: [PATCH] [PM-4669] Fix SM subscription during free upgrade (#3407) * Formatting, no logic * Pass upgrade.UseSecretsManager for free upgrade flow --- .../Business/SubscriptionCreateOptions.cs | 76 +++++++++++++------ 1 file changed, 54 insertions(+), 22 deletions(-) diff --git a/src/Core/Models/Business/SubscriptionCreateOptions.cs b/src/Core/Models/Business/SubscriptionCreateOptions.cs index 0ea4c4c0b5..17faef40a4 100644 --- a/src/Core/Models/Business/SubscriptionCreateOptions.cs +++ b/src/Core/Models/Business/SubscriptionCreateOptions.cs @@ -4,10 +4,18 @@ using Plan = Bit.Core.Models.StaticStore.Plan; namespace Bit.Core.Models.Business; -public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOptions +public class OrganizationSubscriptionOptionsBase : SubscriptionCreateOptions { - public OrganizationSubscriptionOptionsBase(Organization org, StaticStore.Plan plan, TaxInfo taxInfo, int additionalSeats, - int additionalStorageGb, bool premiumAccessAddon, int additionalSmSeats, int additionalServiceAccounts) + public OrganizationSubscriptionOptionsBase( + Organization org, + Plan plan, + TaxInfo taxInfo, + int additionalSeats, + int additionalStorageGb, + bool premiumAccessAddon, + bool useSecretsManager, + int additionalSmSeats, + int additionalServiceAccounts) { Items = new List(); Metadata = new Dictionary @@ -17,7 +25,7 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti AddPlanIdToSubscription(plan); - if (org.UseSecretsManager) + if (useSecretsManager) { AddSecretsManagerSeat(plan, additionalSmSeats); AddServiceAccount(plan, additionalServiceAccounts); @@ -38,7 +46,10 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti if (additionalSmSeats > 0 && plan.SecretsManager.StripeSeatPlanId != null) { Items.Add(new SubscriptionItemOptions - { Plan = plan.SecretsManager.StripeSeatPlanId, Quantity = additionalSmSeats }); + { + Plan = plan.SecretsManager.StripeSeatPlanId, + Quantity = additionalSmSeats + }); } } @@ -47,11 +58,14 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti if (additionalSeats > 0 && plan.PasswordManager.StripeSeatPlanId != null) { Items.Add(new SubscriptionItemOptions - { Plan = plan.PasswordManager.StripeSeatPlanId, Quantity = additionalSeats }); + { + Plan = plan.PasswordManager.StripeSeatPlanId, + Quantity = additionalSeats + }); } } - private void AddServiceAccount(StaticStore.Plan plan, int additionalServiceAccounts) + private void AddServiceAccount(Plan plan, int additionalServiceAccounts) { if (additionalServiceAccounts > 0 && plan.SecretsManager.StripeServiceAccountPlanId != null) { @@ -63,7 +77,7 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti } } - private void AddAdditionalStorage(StaticStore.Plan plan, int additionalStorageGb) + private void AddAdditionalStorage(Plan plan, int additionalStorageGb) { if (additionalStorageGb > 0) { @@ -75,19 +89,27 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti } } - private void AddPremiumAccessAddon(StaticStore.Plan plan, bool premiumAccessAddon) + private void AddPremiumAccessAddon(Plan plan, bool premiumAccessAddon) { if (premiumAccessAddon && plan.PasswordManager.StripePremiumAccessPlanId != null) { - Items.Add(new SubscriptionItemOptions { Plan = plan.PasswordManager.StripePremiumAccessPlanId, Quantity = 1 }); + Items.Add(new SubscriptionItemOptions + { + Plan = plan.PasswordManager.StripePremiumAccessPlanId, + Quantity = 1 + }); } } - private void AddPlanIdToSubscription(StaticStore.Plan plan) + private void AddPlanIdToSubscription(Plan plan) { if (plan.PasswordManager.StripePlanId != null) { - Items.Add(new SubscriptionItemOptions { Plan = plan.PasswordManager.StripePlanId, Quantity = 1 }); + Items.Add(new SubscriptionItemOptions + { + Plan = plan.PasswordManager.StripePlanId, + Quantity = 1 + }); } } } @@ -95,11 +117,18 @@ public class OrganizationSubscriptionOptionsBase : Stripe.SubscriptionCreateOpti public class OrganizationPurchaseSubscriptionOptions : OrganizationSubscriptionOptionsBase { public OrganizationPurchaseSubscriptionOptions( - Organization org, StaticStore.Plan plan, - TaxInfo taxInfo, int additionalSeats, - int additionalStorageGb, bool premiumAccessAddon, - int additionalSmSeats, int additionalServiceAccounts) : - base(org, plan, taxInfo, additionalSeats, additionalStorageGb, premiumAccessAddon, additionalSmSeats, additionalServiceAccounts) + Organization org, + Plan plan, + TaxInfo taxInfo, + int additionalSeats, + int additionalStorageGb, + bool premiumAccessAddon, + int additionalSmSeats, + int additionalServiceAccounts) : + base(org, plan, taxInfo, additionalSeats, + additionalStorageGb, premiumAccessAddon, + org.UseSecretsManager, additionalSmSeats, + additionalServiceAccounts) { OffSession = true; TrialPeriodDays = plan.TrialPeriodDays; @@ -109,11 +138,14 @@ public class OrganizationPurchaseSubscriptionOptions : OrganizationSubscriptionO public class OrganizationUpgradeSubscriptionOptions : OrganizationSubscriptionOptionsBase { public OrganizationUpgradeSubscriptionOptions( - string customerId, Organization org, - StaticStore.Plan plan, OrganizationUpgrade upgrade) : - base(org, plan, upgrade.TaxInfo, upgrade.AdditionalSeats, upgrade.AdditionalStorageGb, - upgrade.PremiumAccessAddon, upgrade.AdditionalSmSeats.GetValueOrDefault(), - upgrade.AdditionalServiceAccounts.GetValueOrDefault()) + string customerId, + Organization org, + Plan plan, + OrganizationUpgrade upgrade) : + base(org, plan, upgrade.TaxInfo, upgrade.AdditionalSeats, + upgrade.AdditionalStorageGb, upgrade.PremiumAccessAddon, + upgrade.UseSecretsManager, upgrade.AdditionalSmSeats.GetValueOrDefault(), + upgrade.AdditionalServiceAccounts.GetValueOrDefault()) { Customer = customerId; }