Add get count method

pull/5338/head
liangshiwei 5 years ago
parent f5b6ef2388
commit 59a6c630be

@ -65,6 +65,12 @@ namespace Volo.Abp.Identity
CancellationToken cancellationToken = default
);
Task<int> GetUnaddedRolesCountAsync(
OrganizationUnit organizationUnit,
string filter = null,
CancellationToken cancellationToken = default
);
Task<List<IdentityUser>> GetMembersAsync(
OrganizationUnit organizationUnit,
string sorting = null,
@ -91,6 +97,12 @@ namespace Volo.Abp.Identity
CancellationToken cancellationToken = default
);
Task<int> GetUnaddedUsersCountAsync(
OrganizationUnit organizationUnit,
string filter = null,
CancellationToken cancellationToken = default
);
Task RemoveAllRolesAsync(
OrganizationUnit organizationUnit,
CancellationToken cancellationToken = default

@ -132,6 +132,19 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
.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(
OrganizationUnit organizationUnit,
string sorting = null,
@ -190,6 +203,24 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
.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()
{
return GetQueryable().IncludeDetails();

@ -126,6 +126,19 @@ namespace Volo.Abp.Identity.MongoDB
.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(
OrganizationUnit organizationUnit,
string sorting = null,
@ -178,6 +191,22 @@ namespace Volo.Abp.Identity.MongoDB
.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)
{
organizationUnit.Roles.Clear();

@ -305,5 +305,22 @@ namespace Volo.Abp.Identity
unaddedRoles.ShouldNotContain(u => u.Name == "moderator");
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