Updated OrganizationUnitRepository

Added GetRolesCount and tests
pull/3732/head
Galip Tolga Erdem 6 years ago
parent 431fe807eb
commit 424d64e23a

@ -50,6 +50,11 @@ namespace Volo.Abp.Identity
CancellationToken cancellationToken = default
);
Task<int> GetRolesCountAsync(
OrganizationUnit organizationUnit,
CancellationToken cancellationToken = default
);
Task<List<IdentityUser>> GetMembersAsync(
OrganizationUnit organizationUnit,
string sorting = null,

@ -99,6 +99,18 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
return await query.ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<int> GetRolesCountAsync(
OrganizationUnit organizationUnit,
CancellationToken cancellationToken = default)
{
var query = from organizationRole in DbContext.Set<OrganizationUnitRole>()
join role in DbContext.Roles on organizationRole.RoleId equals role.Id
where organizationRole.OrganizationUnitId == organizationUnit.Id
select role;
return await query.CountAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<List<IdentityUser>> GetMembersAsync(
OrganizationUnit organizationUnit,
string sorting = null,

@ -91,6 +91,17 @@ namespace Volo.Abp.Identity.MongoDB
.PageBy<IdentityRole, IMongoQueryable<IdentityRole>>(skipCount, maxResultCount)
.ToListAsync(cancellationToken);
}
public virtual async Task<int> GetRolesCountAsync(
OrganizationUnit organizationUnit,
CancellationToken cancellationToken = default)
{
var roleIds = organizationUnit.Roles.Select(r => r.RoleId).ToArray();
return await DbContext.Roles.AsQueryable().Where(r => roleIds.Contains(r.Id))
.As<IMongoQueryable<IdentityRole>>()
.CountAsync(cancellationToken);
}
public virtual async Task<List<IdentityUser>> GetMembersAsync(
OrganizationUnit organizationUnit,
string sorting = null,
@ -114,7 +125,9 @@ namespace Volo.Abp.Identity.MongoDB
.ToListAsync(GetCancellationToken(cancellationToken));
}
public virtual async Task<int> GetMembersCountAsync(OrganizationUnit organizationUnit, CancellationToken cancellationToken = default)
public virtual async Task<int> GetMembersCountAsync(
OrganizationUnit organizationUnit,
CancellationToken cancellationToken = default)
{
return await DbContext.Users.AsQueryable()
.Where(u => u.OrganizationUnits.Any(uou => uou.OrganizationUnitId == organizationUnit.Id))

@ -135,12 +135,21 @@ namespace Volo.Abp.Identity
}
[Fact]
public async Task GetCountMembersCountInOrganizationUnit()
public async Task GetMembersCountOfOrganizationUnit()
{
OrganizationUnit ou = await _organizationUnitRepository.GetAsync("OU111", true);
var users = await _organizationUnitRepository.GetMembersCountAsync(ou);
var usersCount = await _organizationUnitRepository.GetMembersCountAsync(ou);
users.ShouldBeGreaterThan(1);
usersCount.ShouldBeGreaterThan(1);
}
[Fact]
public async Task GetRolesCountOfOrganizationUnit()
{
OrganizationUnit ou = await _organizationUnitRepository.GetAsync("OU111", true);
var rolesCount = await _organizationUnitRepository.GetRolesCountAsync(ou);
rolesCount.ShouldBeGreaterThan(1);
}
}
}

Loading…
Cancel
Save