@ -57,6 +57,7 @@ public class OrganizationService : IOrganizationService
@@ -57,6 +57,7 @@ public class OrganizationService : IOrganizationService
private readonly IProviderUserRepository _ providerUserRepository ;
private readonly ICountNewSmSeatsRequiredQuery _ countNewSmSeatsRequiredQuery ;
private readonly IUpdateSecretsManagerSubscriptionCommand _ updateSecretsManagerSubscriptionCommand ;
private readonly IProviderRepository _ providerRepository ;
private readonly IOrgUserInviteTokenableFactory _ orgUserInviteTokenableFactory ;
private readonly IDataProtectorTokenFactory < OrgUserInviteTokenable > _ orgUserInviteTokenDataFactory ;
private readonly IFeatureService _f eatureService ;
@ -90,6 +91,7 @@ public class OrganizationService : IOrganizationService
@@ -90,6 +91,7 @@ public class OrganizationService : IOrganizationService
IOrgUserInviteTokenableFactory orgUserInviteTokenableFactory ,
IDataProtectorTokenFactory < OrgUserInviteTokenable > orgUserInviteTokenDataFactory ,
IUpdateSecretsManagerSubscriptionCommand updateSecretsManagerSubscriptionCommand ,
IProviderRepository providerRepository ,
IFeatureService featureService )
{
_ organizationRepository = organizationRepository ;
@ -118,6 +120,7 @@ public class OrganizationService : IOrganizationService
@@ -118,6 +120,7 @@ public class OrganizationService : IOrganizationService
_ providerUserRepository = providerUserRepository ;
_ countNewSmSeatsRequiredQuery = countNewSmSeatsRequiredQuery ;
_ updateSecretsManagerSubscriptionCommand = updateSecretsManagerSubscriptionCommand ;
_ providerRepository = providerRepository ;
_ orgUserInviteTokenableFactory = orgUserInviteTokenableFactory ;
_ orgUserInviteTokenDataFactory = orgUserInviteTokenDataFactory ;
_f eatureService = featureService ;
@ -862,7 +865,7 @@ public class OrganizationService : IOrganizationService
@@ -862,7 +865,7 @@ public class OrganizationService : IOrganizationService
if ( newSeatsRequired > 0 )
{
var ( canScale , failureReason ) = CanScale ( organization , newSeatsRequired ) ;
var ( canScale , failureReason ) = await CanScaleAsync ( organization , newSeatsRequired ) ;
if ( ! canScale )
{
throw new BadRequestException ( failureReason ) ;
@ -1182,7 +1185,8 @@ public class OrganizationService : IOrganizationService
@@ -1182,7 +1185,8 @@ public class OrganizationService : IOrganizationService
return result ;
}
internal ( bool canScale , string failureReason ) CanScale ( Organization organization ,
internal async Task < ( bool canScale , string failureReason ) > CanScaleAsync (
Organization organization ,
int seatsToAdd )
{
var failureReason = "" ;
@ -1197,6 +1201,13 @@ public class OrganizationService : IOrganizationService
@@ -1197,6 +1201,13 @@ public class OrganizationService : IOrganizationService
return ( true , failureReason ) ;
}
var provider = await _ providerRepository . GetByOrganizationIdAsync ( organization . Id ) ;
if ( provider is { Enabled : true , Type : ProviderType . Reseller } )
{
return ( false , "Seat limit has been reached. Contact your provider to purchase additional seats." ) ;
}
if ( organization . Seats . HasValue & &
organization . MaxAutoscaleSeats . HasValue & &
organization . MaxAutoscaleSeats . Value < organization . Seats . Value + seatsToAdd )
@ -1214,7 +1225,7 @@ public class OrganizationService : IOrganizationService
@@ -1214,7 +1225,7 @@ public class OrganizationService : IOrganizationService
return ;
}
var ( canScale , failureMessage ) = CanScale ( organization , seatsToAdd ) ;
var ( canScale , failureMessage ) = await CanScaleAsync ( organization , seatsToAdd ) ;
if ( ! canScale )
{
throw new BadRequestException ( failureMessage ) ;