mirror of
https://github.com/bitwarden/server.git
synced 2024-11-24 12:35:25 +01:00
[PM-13982] [Defect] Can no longer create providers due to foreign key conflict (#4935)
This commit is contained in:
parent
4a1b90db48
commit
d38c489443
@ -41,13 +41,15 @@ public class CreateProviderCommand : ICreateProviderCommand
|
|||||||
|
|
||||||
public async Task CreateMspAsync(Provider provider, string ownerEmail, int teamsMinimumSeats, int enterpriseMinimumSeats)
|
public async Task CreateMspAsync(Provider provider, string ownerEmail, int teamsMinimumSeats, int enterpriseMinimumSeats)
|
||||||
{
|
{
|
||||||
var providerPlans = new List<ProviderPlan>
|
var providerId = await CreateProviderAsync(provider, ownerEmail);
|
||||||
{
|
|
||||||
CreateProviderPlan(provider.Id, PlanType.TeamsMonthly, teamsMinimumSeats),
|
|
||||||
CreateProviderPlan(provider.Id, PlanType.EnterpriseMonthly, enterpriseMinimumSeats)
|
|
||||||
};
|
|
||||||
|
|
||||||
await CreateProviderAsync(provider, ownerEmail, providerPlans);
|
var isConsolidatedBillingEnabled = _featureService.IsEnabled(FeatureFlagKeys.EnableConsolidatedBilling);
|
||||||
|
|
||||||
|
if (isConsolidatedBillingEnabled)
|
||||||
|
{
|
||||||
|
await CreateProviderPlanAsync(providerId, PlanType.TeamsMonthly, teamsMinimumSeats);
|
||||||
|
await CreateProviderPlanAsync(providerId, PlanType.EnterpriseMonthly, enterpriseMinimumSeats);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task CreateResellerAsync(Provider provider)
|
public async Task CreateResellerAsync(Provider provider)
|
||||||
@ -57,15 +59,17 @@ public class CreateProviderCommand : ICreateProviderCommand
|
|||||||
|
|
||||||
public async Task CreateMultiOrganizationEnterpriseAsync(Provider provider, string ownerEmail, PlanType plan, int minimumSeats)
|
public async Task CreateMultiOrganizationEnterpriseAsync(Provider provider, string ownerEmail, PlanType plan, int minimumSeats)
|
||||||
{
|
{
|
||||||
var providerPlans = new List<ProviderPlan>
|
var providerId = await CreateProviderAsync(provider, ownerEmail);
|
||||||
{
|
|
||||||
CreateProviderPlan(provider.Id, plan, minimumSeats)
|
|
||||||
};
|
|
||||||
|
|
||||||
await CreateProviderAsync(provider, ownerEmail, providerPlans);
|
var isConsolidatedBillingEnabled = _featureService.IsEnabled(FeatureFlagKeys.EnableConsolidatedBilling);
|
||||||
|
|
||||||
|
if (isConsolidatedBillingEnabled)
|
||||||
|
{
|
||||||
|
await CreateProviderPlanAsync(providerId, plan, minimumSeats);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task CreateProviderAsync(Provider provider, string ownerEmail, List<ProviderPlan> providerPlans)
|
private async Task<Guid> CreateProviderAsync(Provider provider, string ownerEmail)
|
||||||
{
|
{
|
||||||
var owner = await _userRepository.GetByEmailAsync(ownerEmail);
|
var owner = await _userRepository.GetByEmailAsync(ownerEmail);
|
||||||
if (owner == null)
|
if (owner == null)
|
||||||
@ -90,16 +94,10 @@ public class CreateProviderCommand : ICreateProviderCommand
|
|||||||
Status = ProviderUserStatusType.Confirmed,
|
Status = ProviderUserStatusType.Confirmed,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (isConsolidatedBillingEnabled)
|
|
||||||
{
|
|
||||||
foreach (var providerPlan in providerPlans)
|
|
||||||
{
|
|
||||||
await _providerPlanRepository.CreateAsync(providerPlan);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
await _providerUserRepository.CreateAsync(providerUser);
|
await _providerUserRepository.CreateAsync(providerUser);
|
||||||
await _providerService.SendProviderSetupInviteEmailAsync(provider, owner.Email);
|
await _providerService.SendProviderSetupInviteEmailAsync(provider, owner.Email);
|
||||||
|
|
||||||
|
return provider.Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task ProviderRepositoryCreateAsync(Provider provider, ProviderStatusType status)
|
private async Task ProviderRepositoryCreateAsync(Provider provider, ProviderStatusType status)
|
||||||
@ -110,9 +108,9 @@ public class CreateProviderCommand : ICreateProviderCommand
|
|||||||
await _providerRepository.CreateAsync(provider);
|
await _providerRepository.CreateAsync(provider);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ProviderPlan CreateProviderPlan(Guid providerId, PlanType planType, int seatMinimum)
|
private async Task CreateProviderPlanAsync(Guid providerId, PlanType planType, int seatMinimum)
|
||||||
{
|
{
|
||||||
return new ProviderPlan
|
var plan = new ProviderPlan
|
||||||
{
|
{
|
||||||
ProviderId = providerId,
|
ProviderId = providerId,
|
||||||
PlanType = planType,
|
PlanType = planType,
|
||||||
@ -120,5 +118,6 @@ public class CreateProviderCommand : ICreateProviderCommand
|
|||||||
PurchasedSeats = 0,
|
PurchasedSeats = 0,
|
||||||
AllocatedSeats = 0
|
AllocatedSeats = 0
|
||||||
};
|
};
|
||||||
|
await _providerPlanRepository.CreateAsync(plan);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user