1
0
mirror of https://github.com/bitwarden/server.git synced 2025-07-01 08:02:49 -05:00
Files
bitwarden/src/Core/Models/Business/SecretsManagerSubscribeUpdate.cs
Thomas Rittson 9021236d61 AC Team code ownership moves: Organization pt. 1 (#3472)
* move Organization.cs files to AC Team code ownership
2023-11-28 17:18:08 -06:00

79 lines
2.7 KiB
C#

using Bit.Core.AdminConsole.Entities;
using Stripe;
namespace Bit.Core.Models.Business;
public class SecretsManagerSubscribeUpdate : SubscriptionUpdate
{
private readonly StaticStore.Plan _plan;
private readonly long? _additionalSeats;
private readonly long? _additionalServiceAccounts;
private readonly int _previousSeats;
private readonly int _previousServiceAccounts;
protected override List<string> PlanIds => new() { _plan.SecretsManager.StripeSeatPlanId, _plan.SecretsManager.StripeServiceAccountPlanId };
public SecretsManagerSubscribeUpdate(Organization organization, StaticStore.Plan plan, long? additionalSeats, long? additionalServiceAccounts)
{
_plan = plan;
_additionalSeats = additionalSeats;
_additionalServiceAccounts = additionalServiceAccounts;
_previousSeats = organization.SmSeats.GetValueOrDefault();
_previousServiceAccounts = organization.SmServiceAccounts.GetValueOrDefault();
}
public override List<SubscriptionItemOptions> RevertItemsOptions(Subscription subscription)
{
var updatedItems = new List<SubscriptionItemOptions>();
RemovePreviousSecretsManagerItems(updatedItems);
return updatedItems;
}
public override List<SubscriptionItemOptions> UpgradeItemsOptions(Subscription subscription)
{
var updatedItems = new List<SubscriptionItemOptions>();
AddNewSecretsManagerItems(updatedItems);
return updatedItems;
}
private void AddNewSecretsManagerItems(List<SubscriptionItemOptions> updatedItems)
{
if (_additionalSeats > 0)
{
updatedItems.Add(new SubscriptionItemOptions
{
Price = _plan.SecretsManager.StripeSeatPlanId,
Quantity = _additionalSeats
});
}
if (_additionalServiceAccounts > 0)
{
updatedItems.Add(new SubscriptionItemOptions
{
Price = _plan.SecretsManager.StripeServiceAccountPlanId,
Quantity = _additionalServiceAccounts
});
}
}
private void RemovePreviousSecretsManagerItems(List<SubscriptionItemOptions> updatedItems)
{
updatedItems.Add(new SubscriptionItemOptions
{
Price = _plan.SecretsManager.StripeSeatPlanId,
Quantity = _previousSeats,
Deleted = _previousSeats == 0 ? true : (bool?)null,
});
updatedItems.Add(new SubscriptionItemOptions
{
Price = _plan.SecretsManager.StripeServiceAccountPlanId,
Quantity = _previousServiceAccounts,
Deleted = _previousServiceAccounts == 0 ? true : (bool?)null,
});
}
}