Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking โ€œSign up for GitHubโ€, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PM-14461] Return ProfileOrganizationResponse from subscription update #5103

Merged
Next Next commit
Return ProviderOrganizationResponse from subscription update
amorask-bitwarden committed Dec 3, 2024
commit 8fa1dbc27e1e52f97bcb78d45c7d999b3e4d9ac1
30 changes: 22 additions & 8 deletions src/Api/Billing/Controllers/OrganizationsController.cs
Original file line number Diff line number Diff line change
@@ -167,13 +167,18 @@

[HttpPost("{id:guid}/subscription")]
[SelfHosted(NotSelfHostedOnly = true)]
public async Task PostSubscription(Guid id, [FromBody] OrganizationSubscriptionUpdateRequestModel model)
public async Task<ProfileOrganizationResponseModel> PostSubscription(Guid id, [FromBody] OrganizationSubscriptionUpdateRequestModel model)
{
if (!await currentContext.EditSubscription(id))
{
throw new NotFoundException();
}

await organizationService.UpdateSubscription(id, model.SeatAdjustment, model.MaxAutoscaleSeats);

var userId = userService.GetProperUserId(User)!.Value;

Check warning on line 179 in src/Api/Billing/Controllers/OrganizationsController.cs

Codecov / codecov/patch

src/Api/Billing/Controllers/OrganizationsController.cs#L179

Added line #L179 was not covered by tests

return await GetProfileOrganizationResponseModelAsync(id, userId);

Check warning on line 181 in src/Api/Billing/Controllers/OrganizationsController.cs

Codecov / codecov/patch

src/Api/Billing/Controllers/OrganizationsController.cs#L181

Added line #L181 was not covered by tests
}

[HttpPost("{id:guid}/subscribe-secrets-manager")]
@@ -198,13 +203,7 @@

await TryGrantOwnerAccessToSecretsManagerAsync(organization.Id, userId);

var organizationDetails = await organizationUserRepository.GetDetailsByUserAsync(userId, organization.Id,
OrganizationUserStatusType.Confirmed);

var organizationManagingActiveUser = await userService.GetOrganizationsManagingUserAsync(userId);
var organizationIdsManagingActiveUser = organizationManagingActiveUser.Select(o => o.Id);

return new ProfileOrganizationResponseModel(organizationDetails, organizationIdsManagingActiveUser);
return await GetProfileOrganizationResponseModelAsync(organization.Id, userId);
}

[HttpPost("{id:guid}/seat")]
@@ -366,4 +365,19 @@

return await organizationRepository.GetByIdAsync(id);
}

private async Task<ProfileOrganizationResponseModel> GetProfileOrganizationResponseModelAsync(
Guid organizationId,
Guid userId)
{
var organizationUserDetails = await organizationUserRepository.GetDetailsByUserAsync(
userId,
organizationId,
OrganizationUserStatusType.Confirmed);

var organizationIdsManagingActiveUser = (await userService.GetOrganizationsManagingUserAsync(userId))
.Select(o => o.Id);

return new ProfileOrganizationResponseModel(organizationUserDetails, organizationIdsManagingActiveUser);
}
}
Loading