1
0
mirror of https://github.com/bitwarden/server synced 2026-02-14 07:23:26 +00:00
Files
server/src/Core/AdminConsole/OrganizationFeatures/Organizations/GetOrganizationSubscriptionsToUpdateQuery.cs
Jared McCannon 86ce3a86e9 [PM-20452] - Offloading Stripe Update (#6034)
* Adding job to update stripe subscriptions and increment seat count  when inviting a user.

* Updating name

* Added ef migrations

* Fixing script

* Fixing procedures. Added repo tests.

* Fixed set stored procedure. Fixed parameter name.

* Added tests for database calls and updated stored procedures

* Fixed build for sql file.

* fixing sproc

* File is nullsafe

* Adding view to select from instead of table.

* Updating UpdateSubscriptionStatus to use a CTE and do all the updates in 1 statement.

* Setting revision date when incrementing seat count

* Added feature flag check for the background job.

* Fixing nullable property.

* Removing new table and just adding the column to org. Updating to query and command. Updated tests.

* Adding migration script rename

* Add SyncSeats to Org.sql def

* Adding contraint name

* Removing old table files.

* Added tests

* Upped the frequency to be at the top of every 3rd hour.

* Updating error message.

* Removing extension method

* Changed to GuidIdArray

* Added xml doc and switched class to record
2025-07-31 07:54:51 -05:00

25 lines
1.0 KiB
C#

using Bit.Core.AdminConsole.Models.Data.Organizations;
using Bit.Core.AdminConsole.OrganizationFeatures.Organizations.Interfaces;
using Bit.Core.Billing.Pricing;
using Bit.Core.Repositories;
namespace Bit.Core.AdminConsole.OrganizationFeatures.Organizations;
public class GetOrganizationSubscriptionsToUpdateQuery(IOrganizationRepository organizationRepository,
IPricingClient pricingClient) : IGetOrganizationSubscriptionsToUpdateQuery
{
public async Task<IEnumerable<OrganizationSubscriptionUpdate>> GetOrganizationSubscriptionsToUpdateAsync()
{
var organizationsToUpdateTask = organizationRepository.GetOrganizationsForSubscriptionSyncAsync();
var plansTask = pricingClient.ListPlans();
await Task.WhenAll(organizationsToUpdateTask, plansTask);
return organizationsToUpdateTask.Result.Select(o => new OrganizationSubscriptionUpdate
{
Organization = o,
Plan = plansTask.Result.FirstOrDefault(plan => plan.Type == o.PlanType)
});
}
}