|
|
|
|
@ -12,7 +12,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
|
|
|
|
|
{
|
|
|
|
|
public class EfCoreOrganizationUnitRepository
|
|
|
|
|
: EfCoreRepository<IIdentityDbContext, OrganizationUnit, Guid>,
|
|
|
|
|
IOrganizationUnitRepository
|
|
|
|
|
IOrganizationUnitRepository
|
|
|
|
|
{
|
|
|
|
|
public EfCoreOrganizationUnitRepository(
|
|
|
|
|
IDbContextProvider<IIdentityDbContext> dbContextProvider)
|
|
|
|
|
@ -56,6 +56,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
|
|
|
|
|
.PageBy(skipCount, maxResultCount)
|
|
|
|
|
.ToListAsync(GetCancellationToken(cancellationToken));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual async Task<List<OrganizationUnit>> GetListAsync(
|
|
|
|
|
IEnumerable<Guid> ids,
|
|
|
|
|
bool includeDetails = false,
|
|
|
|
|
@ -111,6 +112,23 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
|
|
|
|
|
return await query.CountAsync(GetCancellationToken(cancellationToken));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual async Task<List<IdentityRole>> GetUnaddedRolesAsync(
|
|
|
|
|
OrganizationUnit organizationUnit,
|
|
|
|
|
string filter = null,
|
|
|
|
|
string sorting = null,
|
|
|
|
|
bool includeDetails = false,
|
|
|
|
|
CancellationToken cancellationToken = default)
|
|
|
|
|
{
|
|
|
|
|
var roleIds = organizationUnit.Roles.Select(r => r.RoleId).ToList();
|
|
|
|
|
|
|
|
|
|
return await DbContext.Roles
|
|
|
|
|
.Where(r => !roleIds.Contains(r.Id))
|
|
|
|
|
.IncludeDetails(includeDetails)
|
|
|
|
|
.WhereIf(!filter.IsNullOrWhiteSpace(), r => r.Name.Contains(filter))
|
|
|
|
|
.OrderBy(sorting ?? nameof(IdentityRole.Name))
|
|
|
|
|
.ToListAsync(cancellationToken);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual async Task<List<IdentityUser>> GetMembersAsync(
|
|
|
|
|
OrganizationUnit organizationUnit,
|
|
|
|
|
string sorting = null,
|
|
|
|
|
@ -118,8 +136,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
|
|
|
|
|
int skipCount = 0,
|
|
|
|
|
string filter = null,
|
|
|
|
|
bool includeDetails = false,
|
|
|
|
|
CancellationToken cancellationToken = default
|
|
|
|
|
)
|
|
|
|
|
CancellationToken cancellationToken = default)
|
|
|
|
|
{
|
|
|
|
|
var query = CreateGetMembersFilteredQuery(organizationUnit, filter);
|
|
|
|
|
|
|
|
|
|
@ -138,6 +155,35 @@ namespace Volo.Abp.Identity.EntityFrameworkCore
|
|
|
|
|
return await query.CountAsync(GetCancellationToken(cancellationToken));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public virtual async Task<List<IdentityUser>> GetUnaddedUsersAsync(
|
|
|
|
|
OrganizationUnit organizationUnit,
|
|
|
|
|
string filter = null,
|
|
|
|
|
string sorting = null,
|
|
|
|
|
bool includeDetails = false,
|
|
|
|
|
CancellationToken cancellationToken = default)
|
|
|
|
|
{
|
|
|
|
|
var userIdsInOrganizationUnit = DbContext.Set<IdentityUserOrganizationUnit>()
|
|
|
|
|
.Where(uou => uou.OrganizationUnitId == organizationUnit.Id)
|
|
|
|
|
.Select(uou => uou.UserId);
|
|
|
|
|
|
|
|
|
|
var query = DbContext.Users
|
|
|
|
|
.Where(u => !userIdsInOrganizationUnit.Contains(u.Id));
|
|
|
|
|
|
|
|
|
|
if (!filter.IsNullOrWhiteSpace())
|
|
|
|
|
{
|
|
|
|
|
query = query.Where(u =>
|
|
|
|
|
u.UserName.Contains(filter) ||
|
|
|
|
|
u.Email.Contains(filter) ||
|
|
|
|
|
(u.PhoneNumber != null && u.PhoneNumber.Contains(filter))
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return await query
|
|
|
|
|
.IncludeDetails(includeDetails)
|
|
|
|
|
.OrderBy(sorting ?? nameof(IdentityUser.Name))
|
|
|
|
|
.ToListAsync(cancellationToken);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override IQueryable<OrganizationUnit> WithDetails()
|
|
|
|
|
{
|
|
|
|
|
return GetQueryable().IncludeDetails();
|
|
|
|
|
|