Browse Source

Revert "OrganizationUnit should have filter parameter"

pull/5400/head
maliming 6 years ago
committed by GitHub
parent
commit
8c0ca548bd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs
  2. 39
      modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs
  3. 44
      modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs
  4. 30
      modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs
  5. 18
      modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs

7
modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs

@ -28,11 +28,9 @@ namespace Volo.Abp.Identity
); );
Task<List<OrganizationUnit>> GetListAsync( Task<List<OrganizationUnit>> GetListAsync(
Guid? parentId,
string sorting = null, string sorting = null,
int maxResultCount = int.MaxValue, int maxResultCount = int.MaxValue,
int skipCount = 0, int skipCount = 0,
string filter = null,
bool includeDetails = false, bool includeDetails = false,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default
); );
@ -114,10 +112,5 @@ namespace Volo.Abp.Identity
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default
); );
Task<long> GetLongCountAsync(
Guid? parentId,
string filter = null,
CancellationToken cancellationToken = default);
} }
} }

39
modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs

@ -1,7 +1,6 @@
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Linq.Dynamic.Core; using System.Linq.Dynamic.Core;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
@ -45,20 +44,14 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
} }
public virtual async Task<List<OrganizationUnit>> GetListAsync( public virtual async Task<List<OrganizationUnit>> GetListAsync(
Guid? parentId,
string sorting = null, string sorting = null,
int maxResultCount = int.MaxValue, int maxResultCount = int.MaxValue,
int skipCount = 0, int skipCount = 0,
string filter = null,
bool includeDetails = true, bool includeDetails = true,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return await DbSet return await DbSet
.IncludeDetails(includeDetails) .IncludeDetails(includeDetails)
.Where(ou=>ou.ParentId==parentId)
.WhereIf(!filter.IsNullOrWhiteSpace(),
ou => ou.DisplayName.Contains(filter) ||
ou.Code.Contains(filter))
.OrderBy(sorting ?? nameof(OrganizationUnit.DisplayName)) .OrderBy(sorting ?? nameof(OrganizationUnit.DisplayName))
.PageBy(skipCount, maxResultCount) .PageBy(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken)); .ToListAsync(GetCancellationToken(cancellationToken));
@ -97,9 +90,9 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
var query = from organizationRole in DbContext.Set<OrganizationUnitRole>() var query = from organizationRole in DbContext.Set<OrganizationUnitRole>()
join role in DbContext.Roles.IncludeDetails(includeDetails) on organizationRole.RoleId equals role.Id join role in DbContext.Roles.IncludeDetails(includeDetails) on organizationRole.RoleId equals role.Id
where organizationRole.OrganizationUnitId == organizationUnit.Id where organizationRole.OrganizationUnitId == organizationUnit.Id
select role; select role;
query = query query = query
.OrderBy(sorting ?? nameof(IdentityRole.Name)) .OrderBy(sorting ?? nameof(IdentityRole.Name))
.PageBy(skipCount, maxResultCount); .PageBy(skipCount, maxResultCount);
@ -112,9 +105,9 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
var query = from organizationRole in DbContext.Set<OrganizationUnitRole>() var query = from organizationRole in DbContext.Set<OrganizationUnitRole>()
join role in DbContext.Roles on organizationRole.RoleId equals role.Id join role in DbContext.Roles on organizationRole.RoleId equals role.Id
where organizationRole.OrganizationUnitId == organizationUnit.Id where organizationRole.OrganizationUnitId == organizationUnit.Id
select role; select role;
return await query.CountAsync(GetCancellationToken(cancellationToken)); return await query.CountAsync(GetCancellationToken(cancellationToken));
} }
@ -164,8 +157,8 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
var query = CreateGetMembersFilteredQuery(organizationUnit, filter); var query = CreateGetMembersFilteredQuery(organizationUnit, filter);
return await query.IncludeDetails(includeDetails).OrderBy(sorting ?? nameof(IdentityUser.UserName)) return await query.IncludeDetails(includeDetails).OrderBy(sorting ?? nameof(IdentityUser.UserName))
.PageBy(skipCount, maxResultCount) .PageBy(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken)); .ToListAsync(GetCancellationToken(cancellationToken));
} }
public virtual async Task<int> GetMembersCountAsync( public virtual async Task<int> GetMembersCountAsync(
@ -252,19 +245,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
DbContext.Set<IdentityUserOrganizationUnit>().RemoveRange(ouMembersQuery); DbContext.Set<IdentityUserOrganizationUnit>().RemoveRange(ouMembersQuery);
} }
public virtual async Task<long> GetLongCountAsync(Guid? parentId, string filter = null, protected virtual IQueryable<IdentityUser> CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, string filter = null)
CancellationToken cancellationToken = default)
{
return await DbSet
.Where(ou=>ou.ParentId==parentId)
.WhereIf(!filter.IsNullOrWhiteSpace(), ou =>
ou.DisplayName.Contains(filter) ||
ou.Code.Contains(filter))
.LongCountAsync(GetCancellationToken(cancellationToken));
}
protected virtual IQueryable<IdentityUser> CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit,
string filter = null)
{ {
var query = from userOu in DbContext.Set<IdentityUserOrganizationUnit>() var query = from userOu in DbContext.Set<IdentityUserOrganizationUnit>()
join user in DbContext.Users on userOu.UserId equals user.Id join user in DbContext.Users on userOu.UserId equals user.Id
@ -283,4 +264,4 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
return query; return query;
} }
} }
} }

44
modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs

@ -16,7 +16,7 @@ namespace Volo.Abp.Identity.MongoDB
{ {
public class MongoOrganizationUnitRepository public class MongoOrganizationUnitRepository
: MongoDbRepository<IAbpIdentityMongoDbContext, OrganizationUnit, Guid>, : MongoDbRepository<IAbpIdentityMongoDbContext, OrganizationUnit, Guid>,
IOrganizationUnitRepository IOrganizationUnitRepository
{ {
public MongoOrganizationUnitRepository( public MongoOrganizationUnitRepository(
IMongoDbContextProvider<IAbpIdentityMongoDbContext> dbContextProvider) IMongoDbContextProvider<IAbpIdentityMongoDbContext> dbContextProvider)
@ -41,8 +41,8 @@ namespace Volo.Abp.Identity.MongoDB
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return await GetMongoQueryable() return await GetMongoQueryable()
.Where(ou => ou.Code.StartsWith(code) && ou.Id != parentId.Value) .Where(ou => ou.Code.StartsWith(code) && ou.Id != parentId.Value)
.ToListAsync(GetCancellationToken(cancellationToken)); .ToListAsync(GetCancellationToken(cancellationToken));
} }
public virtual async Task<List<OrganizationUnit>> GetListAsync( public virtual async Task<List<OrganizationUnit>> GetListAsync(
@ -51,28 +51,22 @@ namespace Volo.Abp.Identity.MongoDB
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return await GetMongoQueryable() return await GetMongoQueryable()
.Where(t => ids.Contains(t.Id)) .Where(t => ids.Contains(t.Id))
.ToListAsync(GetCancellationToken(cancellationToken)); .ToListAsync(GetCancellationToken(cancellationToken));
} }
public virtual async Task<List<OrganizationUnit>> GetListAsync( public virtual async Task<List<OrganizationUnit>> GetListAsync(
Guid? parentId,
string sorting = null, string sorting = null,
int maxResultCount = int.MaxValue, int maxResultCount = int.MaxValue,
int skipCount = 0, int skipCount = 0,
string filter = null,
bool includeDetails = false, bool includeDetails = false,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
return await GetMongoQueryable() return await GetMongoQueryable()
.Where(ou=>ou.ParentId==parentId) .OrderBy(sorting ?? nameof(OrganizationUnit.DisplayName))
.WhereIf(!filter.IsNullOrWhiteSpace(), .As<IMongoQueryable<OrganizationUnit>>()
ou => ou.DisplayName.Contains(filter) || .PageBy<OrganizationUnit, IMongoQueryable<OrganizationUnit>>(skipCount, maxResultCount)
ou.Code.Contains(filter)) .ToListAsync(GetCancellationToken(cancellationToken));
.OrderBy(sorting ?? nameof(OrganizationUnit.DisplayName))
.As<IMongoQueryable<OrganizationUnit>>()
.PageBy<OrganizationUnit, IMongoQueryable<OrganizationUnit>>(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken));
} }
public virtual async Task<OrganizationUnit> GetAsync( public virtual async Task<OrganizationUnit> GetAsync(
@ -172,6 +166,7 @@ namespace Volo.Abp.Identity.MongoDB
return await query.CountAsync(GetCancellationToken(cancellationToken)); return await query.CountAsync(GetCancellationToken(cancellationToken));
} }
public async Task<List<IdentityUser>> GetUnaddedUsersAsync( public async Task<List<IdentityUser>> GetUnaddedUsersAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
string sorting = null, string sorting = null,
@ -218,8 +213,7 @@ namespace Volo.Abp.Identity.MongoDB
return Task.FromResult(0); return Task.FromResult(0);
} }
public virtual async Task RemoveAllMembersAsync(OrganizationUnit organizationUnit, public virtual async Task RemoveAllMembersAsync(OrganizationUnit organizationUnit, CancellationToken cancellationToken = default)
CancellationToken cancellationToken = default)
{ {
var users = await DbContext.Users.AsQueryable() var users = await DbContext.Users.AsQueryable()
.Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id)) .Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id))
@ -233,19 +227,7 @@ namespace Volo.Abp.Identity.MongoDB
} }
} }
public virtual async Task<long> GetLongCountAsync(Guid? parentId, string filter = null, protected virtual IMongoQueryable<IdentityUser> CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, string filter = null)
CancellationToken cancellationToken = default)
{
return await GetMongoQueryable()
.Where(ou=>ou.ParentId==parentId)
.WhereIf<OrganizationUnit, IMongoQueryable<OrganizationUnit>>(!filter.IsNullOrWhiteSpace(), ou =>
ou.DisplayName.Contains(filter) ||
ou.Code.Contains(filter))
.LongCountAsync(GetCancellationToken(cancellationToken));
}
protected virtual IMongoQueryable<IdentityUser> CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit,
string filter = null)
{ {
return DbContext.Users.AsQueryable() return DbContext.Users.AsQueryable()
.Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id)) .Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id))
@ -258,4 +240,4 @@ namespace Volo.Abp.Identity.MongoDB
); );
} }
} }
} }

30
modules/identity/test/Volo.Abp.Identity.Application.Tests/Volo/Abp/Identity/IdentityRoleAppService_Tests.cs

@ -11,14 +11,11 @@ namespace Volo.Abp.Identity
{ {
private readonly IIdentityRoleAppService _roleAppService; private readonly IIdentityRoleAppService _roleAppService;
private readonly IIdentityRoleRepository _roleRepository; private readonly IIdentityRoleRepository _roleRepository;
private readonly IOrganizationUnitRepository _organizationUnitRepository;
private readonly OrganizationUnitManager _organization;
public IdentityRoleAppService_Tests() public IdentityRoleAppService_Tests()
{ {
_roleAppService = GetRequiredService<IIdentityRoleAppService>(); _roleAppService = GetRequiredService<IIdentityRoleAppService>();
_roleRepository = GetRequiredService<IIdentityRoleRepository>(); _roleRepository = GetRequiredService<IIdentityRoleRepository>();
_organization = GetRequiredService<OrganizationUnitManager>();
_organizationUnitRepository=GetRequiredService<IOrganizationUnitRepository>();
} }
[Fact] [Fact]
@ -84,31 +81,6 @@ namespace Volo.Abp.Identity
role.Name.ShouldBe(input.Name); role.Name.ShouldBe(input.Name);
} }
[Fact]
public async Task CreateWithDetailsAsync()
{
//Arrange
var input = new IdentityRoleCreateDto
{
Name = Guid.NewGuid().ToString("N").Left(8)
};
var orgInput=new OrganizationUnit(
_organization.GuidGenerator.Create(),
Guid.NewGuid().ToString("N").Left(8)
);
//Act
var result = await _roleAppService.CreateAsync(input);
await _organization.CreateAsync(orgInput);
var role = await _roleRepository.GetAsync(result.Id);
await _organization.AddRoleToOrganizationUnitAsync(role,orgInput);
//Assert
orgInput.Roles.Count.ShouldBeGreaterThan(0);
}
[Fact] [Fact]
public async Task UpdateAsync() public async Task UpdateAsync()
{ {

18
modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs

@ -59,22 +59,6 @@ namespace Volo.Abp.Identity
var ous = await _organizationUnitRepository.GetListAsync(ouIds); var ous = await _organizationUnitRepository.GetListAsync(ouIds);
ous.Count.ShouldBe(2); ous.Count.ShouldBe(2);
ous.ShouldContain(ou => ou.Id == ouIds.First()); ous.ShouldContain(ou => ou.Id == ouIds.First());
var ou11 = await _organizationUnitRepository.GetAsync("OU11");
ou11.ShouldNotBeNull();
var ou11Children = await _organizationUnitRepository.GetListAsync(ou11.Id, includeDetails: true);
ou11Children.Count.ShouldBe(2);
}
[Fact]
public async Task GetLongCountAsync()
{
(await _organizationUnitRepository.GetLongCountAsync(_guidGenerator.Create(), filter: "11")).ShouldBe(0);
var countRoot = await _organizationUnitRepository.GetLongCountAsync(null, filter: "1");
countRoot.ShouldBe(1);
var ou11 = await _organizationUnitRepository.GetAsync("OU11");
ou11.ShouldNotBeNull();
(await _organizationUnitRepository.GetLongCountAsync(ou11.Id, "2")).ShouldBe(1);
} }
[Fact] [Fact]
@ -208,7 +192,7 @@ namespace Volo.Abp.Identity
{ {
OrganizationUnit ou1 = await _organizationUnitRepository.GetAsync("OU111", true); OrganizationUnit ou1 = await _organizationUnitRepository.GetAsync("OU111", true);
OrganizationUnit ou2 = await _organizationUnitRepository.GetAsync("OU112", true); OrganizationUnit ou2 = await _organizationUnitRepository.GetAsync("OU112", true);
var users = await _identityUserRepository.GetUsersInOrganizationsListAsync(new List<Guid> { ou1.Id, ou2.Id }); var users = await _identityUserRepository.GetUsersInOrganizationsListAsync(new List<Guid> {ou1.Id, ou2.Id});
users.Count.ShouldBeGreaterThan(0); users.Count.ShouldBeGreaterThan(0);
} }

Loading…
Cancel
Save