mirror of
https://github.com/bitwarden/server.git
synced 2025-04-17 19:18:16 -05:00
billing response for org
This commit is contained in:
parent
5370c2303e
commit
63a82336c6
@ -25,6 +25,7 @@ namespace Bit.Api.Controllers
|
|||||||
private readonly IOrganizationService _organizationService;
|
private readonly IOrganizationService _organizationService;
|
||||||
private readonly IUserService _userService;
|
private readonly IUserService _userService;
|
||||||
private readonly CurrentContext _currentContext;
|
private readonly CurrentContext _currentContext;
|
||||||
|
private readonly GlobalSettings _globalSettings;
|
||||||
private readonly UserManager<User> _userManager;
|
private readonly UserManager<User> _userManager;
|
||||||
|
|
||||||
public OrganizationsController(
|
public OrganizationsController(
|
||||||
@ -33,6 +34,7 @@ namespace Bit.Api.Controllers
|
|||||||
IOrganizationService organizationService,
|
IOrganizationService organizationService,
|
||||||
IUserService userService,
|
IUserService userService,
|
||||||
CurrentContext currentContext,
|
CurrentContext currentContext,
|
||||||
|
GlobalSettings globalSettings,
|
||||||
UserManager<User> userManager)
|
UserManager<User> userManager)
|
||||||
{
|
{
|
||||||
_organizationRepository = organizationRepository;
|
_organizationRepository = organizationRepository;
|
||||||
@ -41,6 +43,7 @@ namespace Bit.Api.Controllers
|
|||||||
_userService = userService;
|
_userService = userService;
|
||||||
_currentContext = currentContext;
|
_currentContext = currentContext;
|
||||||
_userManager = userManager;
|
_userManager = userManager;
|
||||||
|
_globalSettings = globalSettings;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("{id}")]
|
[HttpGet("{id}")]
|
||||||
@ -76,14 +79,20 @@ namespace Bit.Api.Controllers
|
|||||||
throw new NotFoundException();
|
throw new NotFoundException();
|
||||||
}
|
}
|
||||||
|
|
||||||
var paymentService = new StripePaymentService();
|
if(!_globalSettings.SelfHosted && organization.Gateway != null)
|
||||||
var billingInfo = await paymentService.GetBillingAsync(organization);
|
|
||||||
if(billingInfo == null)
|
|
||||||
{
|
{
|
||||||
throw new NotFoundException();
|
var paymentService = new StripePaymentService();
|
||||||
|
var billingInfo = await paymentService.GetBillingAsync(organization);
|
||||||
|
if(billingInfo == null)
|
||||||
|
{
|
||||||
|
throw new NotFoundException();
|
||||||
|
}
|
||||||
|
return new OrganizationBillingResponseModel(organization, billingInfo);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return new OrganizationBillingResponseModel(organization);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new OrganizationBillingResponseModel(organization, billingInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("")]
|
[HttpGet("")]
|
||||||
@ -307,13 +316,13 @@ namespace Bit.Api.Controllers
|
|||||||
throw new NotFoundException();
|
throw new NotFoundException();
|
||||||
}
|
}
|
||||||
|
|
||||||
var license = await ApiHelpers.ReadJsonFileFromBody<UserLicense>(HttpContext, model.License);
|
var license = await ApiHelpers.ReadJsonFileFromBody<OrganizationLicense>(HttpContext, model.License);
|
||||||
if(license == null)
|
if(license == null)
|
||||||
{
|
{
|
||||||
throw new BadRequestException("Invalid license");
|
throw new BadRequestException("Invalid license");
|
||||||
}
|
}
|
||||||
|
|
||||||
await _organizationService.UpdateLicenseAsync(id, license);
|
await _organizationService.UpdateLicenseAsync(new Guid(id), license);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("{id}/import")]
|
[HttpPost("{id}/import")]
|
||||||
|
@ -55,6 +55,18 @@ namespace Bit.Core.Models.Api
|
|||||||
Utilities.CoreHelpers.ReadableBytesSize(organization.Storage.Value) : null;
|
Utilities.CoreHelpers.ReadableBytesSize(organization.Storage.Value) : null;
|
||||||
StorageGb = organization.Storage.HasValue ? Math.Round(organization.Storage.Value / 1073741824D) : 0; // 1 GB
|
StorageGb = organization.Storage.HasValue ? Math.Round(organization.Storage.Value / 1073741824D) : 0; // 1 GB
|
||||||
MaxStorageGb = organization.MaxStorageGb;
|
MaxStorageGb = organization.MaxStorageGb;
|
||||||
|
// License = ...
|
||||||
|
Expiration = DateTime.UtcNow.AddYears(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public OrganizationBillingResponseModel(Organization organization)
|
||||||
|
: base(organization, "organizationBilling")
|
||||||
|
{
|
||||||
|
StorageName = organization.Storage.HasValue ?
|
||||||
|
Utilities.CoreHelpers.ReadableBytesSize(organization.Storage.Value) : null;
|
||||||
|
StorageGb = organization.Storage.HasValue ? Math.Round(organization.Storage.Value / 1073741824D, 2) : 0; // 1 GB
|
||||||
|
MaxStorageGb = organization.MaxStorageGb;
|
||||||
|
Expiration = organization.ExpirationDate;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string StorageName { get; set; }
|
public string StorageName { get; set; }
|
||||||
@ -64,5 +76,7 @@ namespace Bit.Core.Models.Api
|
|||||||
public BillingSubscription Subscription { get; set; }
|
public BillingSubscription Subscription { get; set; }
|
||||||
public BillingInvoice UpcomingInvoice { get; set; }
|
public BillingInvoice UpcomingInvoice { get; set; }
|
||||||
public IEnumerable<BillingCharge> Charges { get; set; }
|
public IEnumerable<BillingCharge> Charges { get; set; }
|
||||||
|
public OrganizationLicense License { get; set; }
|
||||||
|
public DateTime? Expiration { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@ namespace Bit.Core.Services
|
|||||||
Task VerifyBankAsync(Guid organizationId, int amount1, int amount2);
|
Task VerifyBankAsync(Guid organizationId, int amount1, int amount2);
|
||||||
Task<Tuple<Organization, OrganizationUser>> SignUpAsync(OrganizationSignup organizationSignup);
|
Task<Tuple<Organization, OrganizationUser>> SignUpAsync(OrganizationSignup organizationSignup);
|
||||||
Task<Tuple<Organization, OrganizationUser>> SignUpAsync(OrganizationLicense license, User owner, string ownerKey);
|
Task<Tuple<Organization, OrganizationUser>> SignUpAsync(OrganizationLicense license, User owner, string ownerKey);
|
||||||
|
Task UpdateLicenseAsync(Guid organizationId, OrganizationLicense license);
|
||||||
Task DeleteAsync(Organization organization);
|
Task DeleteAsync(Organization organization);
|
||||||
Task DisableAsync(Guid organizationId, DateTime? expirationDate);
|
Task DisableAsync(Guid organizationId, DateTime? expirationDate);
|
||||||
Task UpdateExpirationDateAsync(Guid organizationId, DateTime? expirationDate);
|
Task UpdateExpirationDateAsync(Guid organizationId, DateTime? expirationDate);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user