|
|
|
@ -1,6 +1,7 @@ |
|
|
|
using Microsoft.EntityFrameworkCore; |
|
|
|
using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.IO; |
|
|
|
using System.Linq.Dynamic.Core; |
|
|
|
using System.Linq; |
|
|
|
using System.Threading; |
|
|
|
@ -12,7 +13,7 @@ namespace Volo.Abp.Identity.EntityFrameworkCore |
|
|
|
{ |
|
|
|
public class EfCoreOrganizationUnitRepository |
|
|
|
: EfCoreRepository<IIdentityDbContext, OrganizationUnit, Guid>, |
|
|
|
IOrganizationUnitRepository |
|
|
|
IOrganizationUnitRepository |
|
|
|
{ |
|
|
|
public EfCoreOrganizationUnitRepository( |
|
|
|
IDbContextProvider<IIdentityDbContext> dbContextProvider) |
|
|
|
@ -47,15 +48,20 @@ namespace Volo.Abp.Identity.EntityFrameworkCore |
|
|
|
string sorting = null, |
|
|
|
int maxResultCount = int.MaxValue, |
|
|
|
int skipCount = 0, |
|
|
|
string filter = null, |
|
|
|
bool includeDetails = true, |
|
|
|
CancellationToken cancellationToken = default) |
|
|
|
{ |
|
|
|
return await DbSet |
|
|
|
.IncludeDetails(includeDetails) |
|
|
|
.WhereIf(!filter.IsNullOrWhiteSpace(), |
|
|
|
ou => ou.DisplayName.Contains(filter) || |
|
|
|
ou.Code.Contains(filter)) |
|
|
|
.OrderBy(sorting ?? nameof(OrganizationUnit.DisplayName)) |
|
|
|
.PageBy(skipCount, maxResultCount) |
|
|
|
.ToListAsync(GetCancellationToken(cancellationToken)); |
|
|
|
} |
|
|
|
|
|
|
|
public virtual async Task<List<OrganizationUnit>> GetListAsync( |
|
|
|
IEnumerable<Guid> ids, |
|
|
|
bool includeDetails = false, |
|
|
|
@ -89,9 +95,9 @@ namespace Volo.Abp.Identity.EntityFrameworkCore |
|
|
|
CancellationToken cancellationToken = default) |
|
|
|
{ |
|
|
|
var query = from organizationRole in DbContext.Set<OrganizationUnitRole>() |
|
|
|
join role in DbContext.Roles.IncludeDetails(includeDetails) on organizationRole.RoleId equals role.Id |
|
|
|
where organizationRole.OrganizationUnitId == organizationUnit.Id |
|
|
|
select role; |
|
|
|
join role in DbContext.Roles.IncludeDetails(includeDetails) on organizationRole.RoleId equals role.Id |
|
|
|
where organizationRole.OrganizationUnitId == organizationUnit.Id |
|
|
|
select role; |
|
|
|
query = query |
|
|
|
.OrderBy(sorting ?? nameof(IdentityRole.Name)) |
|
|
|
.PageBy(skipCount, maxResultCount); |
|
|
|
@ -104,9 +110,9 @@ namespace Volo.Abp.Identity.EntityFrameworkCore |
|
|
|
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; |
|
|
|
join role in DbContext.Roles on organizationRole.RoleId equals role.Id |
|
|
|
where organizationRole.OrganizationUnitId == organizationUnit.Id |
|
|
|
select role; |
|
|
|
|
|
|
|
return await query.CountAsync(GetCancellationToken(cancellationToken)); |
|
|
|
} |
|
|
|
@ -119,13 +125,13 @@ namespace Volo.Abp.Identity.EntityFrameworkCore |
|
|
|
string filter = null, |
|
|
|
bool includeDetails = false, |
|
|
|
CancellationToken cancellationToken = default |
|
|
|
) |
|
|
|
) |
|
|
|
{ |
|
|
|
var query = CreateGetMembersFilteredQuery(organizationUnit, filter); |
|
|
|
|
|
|
|
return await query.IncludeDetails(includeDetails).OrderBy(sorting ?? nameof(IdentityUser.UserName)) |
|
|
|
.PageBy(skipCount, maxResultCount) |
|
|
|
.ToListAsync(GetCancellationToken(cancellationToken)); |
|
|
|
.PageBy(skipCount, maxResultCount) |
|
|
|
.ToListAsync(GetCancellationToken(cancellationToken)); |
|
|
|
} |
|
|
|
|
|
|
|
public virtual async Task<int> GetMembersCountAsync( |
|
|
|
@ -162,7 +168,8 @@ namespace Volo.Abp.Identity.EntityFrameworkCore |
|
|
|
DbContext.Set<IdentityUserOrganizationUnit>().RemoveRange(ouMembersQuery); |
|
|
|
} |
|
|
|
|
|
|
|
protected virtual IQueryable<IdentityUser> CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, string filter = null) |
|
|
|
protected virtual IQueryable<IdentityUser> CreateGetMembersFilteredQuery(OrganizationUnit organizationUnit, |
|
|
|
string filter = null) |
|
|
|
{ |
|
|
|
var query = from userOu in DbContext.Set<IdentityUserOrganizationUnit>() |
|
|
|
join user in DbContext.Users on userOu.UserId equals user.Id |
|
|
|
@ -181,4 +188,4 @@ namespace Volo.Abp.Identity.EntityFrameworkCore |
|
|
|
return query; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |