1
0
mirror of https://github.com/bitwarden/server synced 2025-12-14 23:33:41 +00:00

payment intent/method support for incomplete status

This commit is contained in:
Kyle Spearrin
2019-08-09 23:56:26 -04:00
parent efcf626999
commit 00e808d731
10 changed files with 173 additions and 39 deletions

View File

@@ -117,7 +117,7 @@ namespace Bit.Core.Services
await _paymentService.ReinstateSubscriptionAsync(organization);
}
public async Task UpgradePlanAsync(Guid organizationId, OrganizationUpgrade upgrade)
public async Task<Tuple<bool, string>> UpgradePlanAsync(Guid organizationId, OrganizationUpgrade upgrade)
{
var organization = await GetOrgById(organizationId);
if(organization == null)
@@ -195,10 +195,13 @@ namespace Bit.Core.Services
// TODO: Check storage?
string paymentIntentClientSecret = null;
var success = true;
if(string.IsNullOrWhiteSpace(organization.GatewaySubscriptionId))
{
await _paymentService.UpgradeFreeOrganizationAsync(organization, newPlan,
paymentIntentClientSecret = await _paymentService.UpgradeFreeOrganizationAsync(organization, newPlan,
upgrade.AdditionalStorageGb, upgrade.AdditionalSeats, upgrade.PremiumAccessAddon);
success = string.IsNullOrWhiteSpace(paymentIntentClientSecret);
}
else
{
@@ -221,9 +224,10 @@ namespace Bit.Core.Services
organization.SelfHost = newPlan.SelfHost;
organization.UsersGetPremium = newPlan.UsersGetPremium || upgrade.PremiumAccessAddon;
organization.Plan = newPlan.Name;
organization.Enabled = true;
organization.RevisionDate = DateTime.UtcNow;
organization.Enabled = success;
await ReplaceAndUpdateCache(organization);
return new Tuple<bool, string>(success, paymentIntentClientSecret);
}
public async Task AdjustStorageAsync(Guid organizationId, short storageAdjustmentGb)
@@ -710,6 +714,18 @@ namespace Bit.Core.Services
await _applicationCacheService.DeleteOrganizationAbilityAsync(organization.Id);
}
public async Task EnableAsync(Guid organizationId, DateTime? expirationDate)
{
var org = await GetOrgById(organizationId);
if(org != null && !org.Enabled)
{
org.Enabled = true;
org.ExpirationDate = expirationDate;
org.RevisionDate = DateTime.UtcNow;
await ReplaceAndUpdateCache(org);
}
}
public async Task DisableAsync(Guid organizationId, DateTime? expirationDate)
{
var org = await GetOrgById(organizationId);