Browse Source

[AC-432] Replaced IProviderOrganizationRepository.GetCountByOrganizationIdsAsync with call to IProviderOrganizationRepository.GetByOrganizationId

pull/2840/head
Rui Tome 3 years ago
parent
commit
ee6e095e88
No known key found for this signature in database
GPG Key ID: 526239D96A8EC066
  1. 9
      bitwarden_license/src/Commercial.Core/Services/ProviderService.cs
  2. 1
      src/Core/Repositories/IProviderOrganizationRepository.cs
  3. 14
      src/Infrastructure.Dapper/Repositories/ProviderOrganizationRepository.cs
  4. 6
      src/Infrastructure.EntityFramework/Repositories/ProviderOrganizationRepository.cs
  5. 21
      src/Infrastructure.EntityFramework/Repositories/Queries/ProviderOrganizationCountByOrganizationIdsQuery.cs
  6. 1
      src/Sql/Sql.sqlproj
  7. 18
      src/Sql/dbo/Stored Procedures/ProviderOrganization_ReadCountByOrganizationIds.sql
  8. 20
      util/Migrator/DbScripts/2023-03-22_00_ProviderAddExistingOrganizations.sql

9
bitwarden_license/src/Commercial.Core/Services/ProviderService.cs

@ -373,10 +373,13 @@ public class ProviderService : IProviderService @@ -373,10 +373,13 @@ public class ProviderService : IProviderService
throw new BadRequestException("Provider must be of type Reseller in order to assign Organizations to it.");
}
var existingProviderOrganizationsCount = await _providerOrganizationRepository.GetCountByOrganizationIdsAsync(organizationIds);
if (existingProviderOrganizationsCount > 0)
foreach (var orgId in organizationIds)
{
throw new BadRequestException("Organizations must not be assigned to any Provider.");
var providerOrganization = await _providerOrganizationRepository.GetByOrganizationId(orgId);
if (providerOrganization != null)
{
throw new BadRequestException("Organizations must not be assigned to any Provider.");
}
}
var providerOrganizationsToInsert = organizationIds.Select(orgId => new ProviderOrganization { ProviderId = providerId, OrganizationId = orgId });

1
src/Core/Repositories/IProviderOrganizationRepository.cs

@ -9,5 +9,4 @@ public interface IProviderOrganizationRepository : IRepository<ProviderOrganizat @@ -9,5 +9,4 @@ public interface IProviderOrganizationRepository : IRepository<ProviderOrganizat
Task<ICollection<ProviderOrganizationOrganizationDetails>> GetManyDetailsByProviderAsync(Guid providerId);
Task<ProviderOrganization> GetByOrganizationId(Guid organizationId);
Task<IEnumerable<ProviderOrganizationProviderDetails>> GetManyByUserAsync(Guid userId);
Task<int> GetCountByOrganizationIdsAsync(IEnumerable<Guid> organizationIds);
}

14
src/Infrastructure.Dapper/Repositories/ProviderOrganizationRepository.cs

@ -99,20 +99,6 @@ public class ProviderOrganizationRepository : Repository<ProviderOrganization, G @@ -99,20 +99,6 @@ public class ProviderOrganizationRepository : Repository<ProviderOrganization, G
}
}
public async Task<int> GetCountByOrganizationIdsAsync(
IEnumerable<Guid> organizationIds)
{
using (var connection = new SqlConnection(ConnectionString))
{
var results = await connection.ExecuteScalarAsync<int>(
$"[{Schema}].[ProviderOrganization_ReadCountByOrganizationIds]",
new { Ids = organizationIds.ToGuidIdArrayTVP() },
commandType: CommandType.StoredProcedure);
return results;
}
}
private DataTable BuildProviderOrganizationsTable(SqlBulkCopy bulkCopy, IEnumerable<ProviderOrganization> providerOrganizations)
{
var po = providerOrganizations.FirstOrDefault();

6
src/Infrastructure.EntityFramework/Repositories/ProviderOrganizationRepository.cs

@ -67,10 +67,4 @@ public class ProviderOrganizationRepository : @@ -67,10 +67,4 @@ public class ProviderOrganizationRepository :
return data;
}
}
public async Task<int> GetCountByOrganizationIdsAsync(IEnumerable<Guid> organizationIds)
{
var query = new ProviderOrganizationCountByOrganizationIdsQuery(organizationIds);
return await GetCountFromQuery(query);
}
}

21
src/Infrastructure.EntityFramework/Repositories/Queries/ProviderOrganizationCountByOrganizationIdsQuery.cs

@ -1,21 +0,0 @@ @@ -1,21 +0,0 @@
using Bit.Core.Entities.Provider;
namespace Bit.Infrastructure.EntityFramework.Repositories.Queries;
public class ProviderOrganizationCountByOrganizationIdsQuery : IQuery<ProviderOrganization>
{
private readonly IEnumerable<Guid> _organizationIds;
public ProviderOrganizationCountByOrganizationIdsQuery(IEnumerable<Guid> organizationIds)
{
_organizationIds = organizationIds;
}
public IQueryable<ProviderOrganization> Run(DatabaseContext dbContext)
{
var query = from po in dbContext.ProviderOrganizations
where _organizationIds.Contains(po.OrganizationId)
select po;
return query;
}
}

1
src/Sql/Sql.sqlproj

@ -264,7 +264,6 @@ @@ -264,7 +264,6 @@
<Build Include="dbo\Stored Procedures\Policy_Update.sql" />
<Build Include="dbo\Stored Procedures\ProviderOrganizationOrganizationDetails_ReadByProviderId.sql" />
<Build Include="dbo\Stored Procedures\ProviderOrganizationProviderDetails_ReadByUserId.sql" />
<Build Include="dbo\Stored Procedures\ProviderOrganization_ReadCountByOrganizationIds.sql" />
<Build Include="dbo\Stored Procedures\Provider_ReadByOrganizationId.sql" />
<Build Include="dbo\Stored Procedures\Organization_UnassignedToProviderSearch.sql" />
<Build Include="dbo\Stored Procedures\ProviderOrganization_Create.sql" />

18
src/Sql/dbo/Stored Procedures/ProviderOrganization_ReadCountByOrganizationIds.sql

@ -1,18 +0,0 @@ @@ -1,18 +0,0 @@
CREATE PROCEDURE [dbo].[ProviderOrganization_ReadCountByOrganizationIds]
@Ids AS [dbo].[GuidIdArray] READONLY
AS
BEGIN
SET NOCOUNT ON
IF (SELECT COUNT(1) FROM @Ids) < 1
BEGIN
RETURN(-1)
END
SELECT
COUNT(1)
FROM
[dbo].[ProviderOrganizationView]
WHERE
[OrganizationId] IN (SELECT [Id] FROM @Ids)
END

20
util/Migrator/DbScripts/2023-03-22_00_ProviderAddExistingOrganizations.sql

@ -52,23 +52,3 @@ BEGIN @@ -52,23 +52,3 @@ BEGIN
END
END
GO
CREATE OR ALTER PROCEDURE [dbo].[ProviderOrganization_ReadCountByOrganizationIds]
@Ids AS [dbo].[GuidIdArray] READONLY
AS
BEGIN
SET NOCOUNT ON
IF (SELECT COUNT(1) FROM @Ids) < 1
BEGIN
RETURN(-1)
END
SELECT
COUNT(1)
FROM
[dbo].[ProviderOrganizationView]
WHERE
[OrganizationId] IN (SELECT [Id] FROM @Ids)
END
GO
Loading…
Cancel
Save