feat(saas): implement marketplace and tenant onboarding
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using Microsoft.Extensions.Options;
|
||||
using Tiku.Application.Jobs;
|
||||
using Tiku.Application.PlatformBilling;
|
||||
using Tiku.Application.Security;
|
||||
using Tiku.Application.Tenancy;
|
||||
using Tiku.Infrastructure.Messaging;
|
||||
@@ -21,12 +22,16 @@ public class Worker(
|
||||
try
|
||||
{
|
||||
var domainCount = await ProcessTenantDomainsAsync(stoppingToken);
|
||||
var subscriptionCount = await ProcessSaasSubscriptionsAsync(stoppingToken);
|
||||
var usageReconciliationCount = await ProcessFeatureUsageReconciliationAsync(stoppingToken);
|
||||
var jobCount = await ProcessBackgroundJobsAsync(stoppingToken);
|
||||
if (domainCount > 0 || jobCount > 0)
|
||||
if (domainCount > 0 || subscriptionCount > 0 || usageReconciliationCount > 0 || jobCount > 0)
|
||||
{
|
||||
logger.LogInformation(
|
||||
"Worker processed {DomainCount} pending tenant domains and {JobCount} background jobs.",
|
||||
"Worker processed {DomainCount} pending tenant domains, {SubscriptionCount} SaaS subscriptions, {UsageReconciliationCount} tenant usage reconciliations, and {JobCount} background jobs.",
|
||||
domainCount,
|
||||
subscriptionCount,
|
||||
usageReconciliationCount,
|
||||
jobCount);
|
||||
}
|
||||
}
|
||||
@@ -68,4 +73,24 @@ public class Worker(
|
||||
includeImmediateJobs: !messagingOptions.IsConfigured,
|
||||
cancellationToken: stoppingToken);
|
||||
}
|
||||
|
||||
private async Task<int> ProcessSaasSubscriptionsAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
await using var scope = scopeFactory.CreateAsyncScope();
|
||||
scope.ServiceProvider.GetRequiredService<ITenantContextInitializer>()
|
||||
.InitializeSystem(null, "SaaS subscription lifecycle discovery worker");
|
||||
return await scope.ServiceProvider
|
||||
.GetRequiredService<ISaasSubscriptionLifecycleService>()
|
||||
.ProcessDueAsync(cancellationToken: stoppingToken);
|
||||
}
|
||||
|
||||
private async Task<int> ProcessFeatureUsageReconciliationAsync(CancellationToken stoppingToken)
|
||||
{
|
||||
await using var scope = scopeFactory.CreateAsyncScope();
|
||||
scope.ServiceProvider.GetRequiredService<ITenantContextInitializer>()
|
||||
.InitializeSystem(null, "Tenant feature usage reconciliation discovery worker");
|
||||
return await scope.ServiceProvider
|
||||
.GetRequiredService<IFeatureUsageReconciliationService>()
|
||||
.ProcessDueAsync(stoppingToken);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user