Browse Source

[PM-21603]Invite Member sub text seat count does not account for sponsorships (#5889)

* Add Occupied Seats at part metadata

* resolve the failing test

Signed-off-by: Cy Okeke <cokeke@bitwarden.com>

---------

Signed-off-by: Cy Okeke <cokeke@bitwarden.com>
fix-identity-resource
cyprain-okeke 7 months ago committed by GitHub
parent
commit
5972ac147e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 6
      src/Api/Billing/Models/Responses/OrganizationMetadataResponse.cs
  2. 6
      src/Core/Billing/Models/OrganizationMetadata.cs
  3. 6
      src/Core/Billing/Services/Implementations/OrganizationBillingService.cs
  4. 2
      test/Api.Test/Billing/Controllers/OrganizationBillingControllerTests.cs

6
src/Api/Billing/Models/Responses/OrganizationMetadataResponse.cs

@ -12,7 +12,8 @@ public record OrganizationMetadataResponse( @@ -12,7 +12,8 @@ public record OrganizationMetadataResponse(
bool IsSubscriptionCanceled,
DateTime? InvoiceDueDate,
DateTime? InvoiceCreatedDate,
DateTime? SubPeriodEndDate)
DateTime? SubPeriodEndDate,
int OrganizationOccupiedSeats)
{
public static OrganizationMetadataResponse From(OrganizationMetadata metadata)
=> new(
@ -25,5 +26,6 @@ public record OrganizationMetadataResponse( @@ -25,5 +26,6 @@ public record OrganizationMetadataResponse(
metadata.IsSubscriptionCanceled,
metadata.InvoiceDueDate,
metadata.InvoiceCreatedDate,
metadata.SubPeriodEndDate);
metadata.SubPeriodEndDate,
metadata.OrganizationOccupiedSeats);
}

6
src/Core/Billing/Models/OrganizationMetadata.cs

@ -10,7 +10,8 @@ public record OrganizationMetadata( @@ -10,7 +10,8 @@ public record OrganizationMetadata(
bool IsSubscriptionCanceled,
DateTime? InvoiceDueDate,
DateTime? InvoiceCreatedDate,
DateTime? SubPeriodEndDate)
DateTime? SubPeriodEndDate,
int OrganizationOccupiedSeats)
{
public static OrganizationMetadata Default => new OrganizationMetadata(
false,
@ -22,5 +23,6 @@ public record OrganizationMetadata( @@ -22,5 +23,6 @@ public record OrganizationMetadata(
false,
null,
null,
null);
null,
0);
}

6
src/Core/Billing/Services/Implementations/OrganizationBillingService.cs

@ -31,6 +31,7 @@ public class OrganizationBillingService( @@ -31,6 +31,7 @@ public class OrganizationBillingService(
IGlobalSettings globalSettings,
ILogger<OrganizationBillingService> logger,
IOrganizationRepository organizationRepository,
IOrganizationUserRepository organizationUserRepository,
IPricingClient pricingClient,
ISetupIntentCache setupIntentCache,
IStripeAdapter stripeAdapter,
@ -107,6 +108,8 @@ public class OrganizationBillingService( @@ -107,6 +108,8 @@ public class OrganizationBillingService(
? await stripeAdapter.InvoiceGetAsync(subscription.LatestInvoiceId, new InvoiceGetOptions())
: null;
var orgOccupiedSeats = await organizationUserRepository.GetOccupiedSeatCountByOrganizationIdAsync(organization.Id);
return new OrganizationMetadata(
isEligibleForSelfHost,
isManaged,
@ -117,7 +120,8 @@ public class OrganizationBillingService( @@ -117,7 +120,8 @@ public class OrganizationBillingService(
subscription.Status == StripeConstants.SubscriptionStatus.Canceled,
invoice?.DueDate,
invoice?.Created,
subscription.CurrentPeriodEnd);
subscription.CurrentPeriodEnd,
orgOccupiedSeats);
}
public async Task

2
test/Api.Test/Billing/Controllers/OrganizationBillingControllerTests.cs

@ -52,7 +52,7 @@ public class OrganizationBillingControllerTests @@ -52,7 +52,7 @@ public class OrganizationBillingControllerTests
{
sutProvider.GetDependency<ICurrentContext>().OrganizationUser(organizationId).Returns(true);
sutProvider.GetDependency<IOrganizationBillingService>().GetMetadata(organizationId)
.Returns(new OrganizationMetadata(true, true, true, true, true, true, true, null, null, null));
.Returns(new OrganizationMetadata(true, true, true, true, true, true, true, null, null, null, 0));
var result = await sutProvider.Sut.GetMetadataAsync(organizationId);

Loading…
Cancel
Save