Browse Source

Merge pull request #5338 from abpframework/liangshiwei/patch-1

add page to OrganizationUnitRepository method
pull/5341/head
Galip Tolga Erdem 6 years ago
committed by GitHub
parent
commit
b0074e6706
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 20
      modules/identity/src/Volo.Abp.Identity.Domain/Volo/Abp/Identity/IOrganizationUnitRepository.cs
  2. 41
      modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreOrganizationUnitRepository.cs
  3. 39
      modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoOrganizationUnitRepository.cs
  4. 17
      modules/identity/test/Volo.Abp.Identity.TestBase/Volo/Abp/Identity/OrganizationUnitRepository_Tests.cs

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

@ -57,12 +57,20 @@ namespace Volo.Abp.Identity
Task<List<IdentityRole>> GetUnaddedRolesAsync( Task<List<IdentityRole>> GetUnaddedRolesAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
string filter = null,
string sorting = null, string sorting = null,
int maxResultCount = int.MaxValue,
int skipCount = 0,
string filter = null,
bool includeDetails = false, bool includeDetails = false,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default
); );
Task<int> GetUnaddedRolesCountAsync(
OrganizationUnit organizationUnit,
string filter = null,
CancellationToken cancellationToken = default
);
Task<List<IdentityUser>> GetMembersAsync( Task<List<IdentityUser>> GetMembersAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
string sorting = null, string sorting = null,
@ -81,12 +89,20 @@ namespace Volo.Abp.Identity
Task<List<IdentityUser>> GetUnaddedUsersAsync( Task<List<IdentityUser>> GetUnaddedUsersAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
string filter = null,
string sorting = null, string sorting = null,
int maxResultCount = int.MaxValue,
int skipCount = 0,
string filter = null,
bool includeDetails = false, bool includeDetails = false,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default
); );
Task<int> GetUnaddedUsersCountAsync(
OrganizationUnit organizationUnit,
string filter = null,
CancellationToken cancellationToken = default
);
Task RemoveAllRolesAsync( Task RemoveAllRolesAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
CancellationToken cancellationToken = default CancellationToken cancellationToken = default

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

@ -114,8 +114,10 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
public virtual async Task<List<IdentityRole>> GetUnaddedRolesAsync( public virtual async Task<List<IdentityRole>> GetUnaddedRolesAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
string filter = null,
string sorting = null, string sorting = null,
int maxResultCount = int.MaxValue,
int skipCount = 0,
string filter = null,
bool includeDetails = false, bool includeDetails = false,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
@ -126,9 +128,23 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
.IncludeDetails(includeDetails) .IncludeDetails(includeDetails)
.WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter)) .WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter))
.OrderBy(sorting ?? nameof(IdentityRole.Name)) .OrderBy(sorting ?? nameof(IdentityRole.Name))
.PageBy(skipCount, maxResultCount)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
} }
public virtual async Task<int> GetUnaddedRolesCountAsync(
OrganizationUnit organizationUnit,
string filter = null,
CancellationToken cancellationToken = default)
{
var roleIds = organizationUnit.Roles.Select(r => r.RoleId).ToList();
return await DbContext.Roles
.Where(r => !roleIds.Contains(r.Id))
.WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter))
.CountAsync(cancellationToken);
}
public virtual async Task<List<IdentityUser>> GetMembersAsync( public virtual async Task<List<IdentityUser>> GetMembersAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
string sorting = null, string sorting = null,
@ -157,8 +173,10 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
public virtual async Task<List<IdentityUser>> GetUnaddedUsersAsync( public virtual async Task<List<IdentityUser>> GetUnaddedUsersAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
string filter = null,
string sorting = null, string sorting = null,
int maxResultCount = int.MaxValue,
int skipCount = 0,
string filter = null,
bool includeDetails = false, bool includeDetails = false,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
@ -181,9 +199,28 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
return await query return await query
.IncludeDetails(includeDetails) .IncludeDetails(includeDetails)
.OrderBy(sorting ?? nameof(IdentityUser.Name)) .OrderBy(sorting ?? nameof(IdentityUser.Name))
.PageBy(skipCount, maxResultCount)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
} }
public virtual async Task<int> GetUnaddedUsersCountAsync(
OrganizationUnit organizationUnit,
string filter = null,
CancellationToken cancellationToken = default)
{
var userIdsInOrganizationUnit = DbContext.Set<IdentityUserOrganizationUnit>()
.Where(uou => uou.OrganizationUnitId == organizationUnit.Id)
.Select(uou => uou.UserId);
return await DbContext.Users
.Where(u => !userIdsInOrganizationUnit.Contains(u.Id))
.WhereIf(!filter.IsNullOrWhiteSpace(), u =>
u.UserName.Contains(filter) ||
u.Email.Contains(filter) ||
(u.PhoneNumber != null && u.PhoneNumber.Contains(filter)))
.CountAsync(cancellationToken);
}
public override IQueryable<OrganizationUnit> WithDetails() public override IQueryable<OrganizationUnit> WithDetails()
{ {
return GetQueryable().IncludeDetails(); return GetQueryable().IncludeDetails();

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

@ -109,8 +109,10 @@ namespace Volo.Abp.Identity.MongoDB
public async Task<List<IdentityRole>> GetUnaddedRolesAsync( public async Task<List<IdentityRole>> GetUnaddedRolesAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
string filter = null,
string sorting = null, string sorting = null,
int maxResultCount = int.MaxValue,
int skipCount = 0,
string filter = null,
bool includeDetails = false, bool includeDetails = false,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
@ -120,9 +122,23 @@ namespace Volo.Abp.Identity.MongoDB
.WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter)) .WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter))
.OrderBy(sorting ?? nameof(IdentityRole.Name)) .OrderBy(sorting ?? nameof(IdentityRole.Name))
.As<IMongoQueryable<IdentityRole>>() .As<IMongoQueryable<IdentityRole>>()
.PageBy<IdentityRole, IMongoQueryable<IdentityRole>>(skipCount, maxResultCount)
.ToListAsync(cancellationToken); .ToListAsync(cancellationToken);
} }
public async Task<int> GetUnaddedRolesCountAsync(
OrganizationUnit organizationUnit,
string filter = null,
CancellationToken cancellationToken = default)
{
var roleIds = organizationUnit.Roles.Select(r => r.RoleId).ToArray();
return await DbContext.Roles.AsQueryable()
.Where(r => !roleIds.Contains(r.Id))
.WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter))
.As<IMongoQueryable<IdentityRole>>()
.CountAsync(cancellationToken);
}
public virtual async Task<List<IdentityUser>> GetMembersAsync( public virtual async Task<List<IdentityUser>> GetMembersAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
string sorting = null, string sorting = null,
@ -153,8 +169,10 @@ namespace Volo.Abp.Identity.MongoDB
public async Task<List<IdentityUser>> GetUnaddedUsersAsync( public async Task<List<IdentityUser>> GetUnaddedUsersAsync(
OrganizationUnit organizationUnit, OrganizationUnit organizationUnit,
string filter = null,
string sorting = null, string sorting = null,
int maxResultCount = int.MaxValue,
int skipCount = 0,
string filter = null,
bool includeDetails = false, bool includeDetails = false,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
@ -169,9 +187,26 @@ namespace Volo.Abp.Identity.MongoDB
) )
.OrderBy(sorting ?? nameof(IdentityUser.UserName)) .OrderBy(sorting ?? nameof(IdentityUser.UserName))
.As<IMongoQueryable<IdentityUser>>() .As<IMongoQueryable<IdentityUser>>()
.PageBy<IdentityUser, IMongoQueryable<IdentityUser>>(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken)); .ToListAsync(GetCancellationToken(cancellationToken));
} }
public async Task<int> GetUnaddedUsersCountAsync(OrganizationUnit organizationUnit, string filter = null,
CancellationToken cancellationToken = default)
{
return await DbContext.Users.AsQueryable()
.Where(u => !u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(
!filter.IsNullOrWhiteSpace(),
u =>
u.UserName.Contains(filter) ||
u.Email.Contains(filter) ||
(u.PhoneNumber != null && u.PhoneNumber.Contains(filter))
)
.As<IMongoQueryable<IdentityUser>>()
.CountAsync(GetCancellationToken(cancellationToken));
}
public virtual Task RemoveAllRolesAsync(OrganizationUnit organizationUnit, CancellationToken cancellationToken = default) public virtual Task RemoveAllRolesAsync(OrganizationUnit organizationUnit, CancellationToken cancellationToken = default)
{ {
organizationUnit.Roles.Clear(); organizationUnit.Roles.Clear();

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

@ -305,5 +305,22 @@ namespace Volo.Abp.Identity
unaddedRoles.ShouldNotContain(u => u.Name == "moderator"); unaddedRoles.ShouldNotContain(u => u.Name == "moderator");
unaddedRoles.ShouldContain(u => u.Name.Contains("admin")); unaddedRoles.ShouldContain(u => u.Name.Contains("admin"));
} }
[Fact]
public async Task GetUnaddedUsersCountOfOrganizationUnitAsync()
{
var ou = await _organizationUnitRepository.GetAsync("OU111", true);
var count = await _organizationUnitRepository.GetUnaddedUsersCountAsync(ou);
count.ShouldBeGreaterThan(0);
}
[Fact]
public async Task GetUnaddedRolesCountOfOrganizationUnitAsync()
{
var ou = await _organizationUnitRepository.GetAsync("OU111", true);
var count = await _organizationUnitRepository.GetUnaddedRolesCountAsync(ou);
count.ShouldBeGreaterThan(0);
}
} }
} }

Loading…
Cancel
Save