Browse Source

Add GetFilteredQueryableAsync method

pull/19372/head
liangshiwei 3 years ago
parent
commit
0689e1c1c3
  1. 166
      modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityUserRepository.cs
  2. 176
      modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentityUserRepository.cs

166
modules/identity/src/Volo.Abp.Identity.EntityFrameworkCore/Volo/Abp/Identity/EntityFrameworkCore/EfCoreIdentityUserRepository.cs

@ -197,42 +197,27 @@ public class EfCoreIdentityUserRepository : EfCoreRepository<IIdentityDbContext,
DateTime? minModifitionTime = null, DateTime? minModifitionTime = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
var query = await GetFilteredQueryableAsync(
var upperFilter = filter?.ToUpperInvariant(); filter,
var query = (await GetDbSetAsync()) roleId,
.IncludeDetails(includeDetails); organizationUnitId,
userName,
if (roleId.HasValue) phoneNumber,
{ emailAddress,
var dbContext = await GetDbContextAsync(); name,
var organizationUnitIds = await dbContext.Set<OrganizationUnitRole>().Where(q => q.RoleId == roleId.Value).Select(q => q.OrganizationUnitId).ToArrayAsync(cancellationToken: cancellationToken); surname,
query = query.Where(identityUser => identityUser.Roles.Any(x => x.RoleId == roleId.Value) || identityUser.OrganizationUnits.Any(x => organizationUnitIds.Contains(x.OrganizationUnitId))); isLockedOut,
} notActive,
emailConfirmed,
return await query isExternal,
.WhereIf( maxCreationTime,
!filter.IsNullOrWhiteSpace(), minCreationTime,
u => maxModifitionTime,
u.NormalizedUserName.Contains(upperFilter) || minModifitionTime,
u.NormalizedEmail.Contains(upperFilter) || cancellationToken
(u.Name != null && u.Name.Contains(filter)) || );
(u.Surname != null && u.Surname.Contains(filter)) ||
(u.PhoneNumber != null && u.PhoneNumber.Contains(filter)) return await query.IncludeDetails(includeDetails)
)
.WhereIf(organizationUnitId.HasValue, identityUser => identityUser.OrganizationUnits.Any(x => x.OrganizationUnitId == organizationUnitId.Value))
.WhereIf(!string.IsNullOrWhiteSpace(userName), x => x.UserName.Contains(userName))
.WhereIf(!string.IsNullOrWhiteSpace(phoneNumber), x => x.PhoneNumber.Contains(phoneNumber))
.WhereIf(!string.IsNullOrWhiteSpace(emailAddress), x => x.Email.Contains(emailAddress))
.WhereIf(!string.IsNullOrWhiteSpace(name), x => x.Name.Contains(name))
.WhereIf(!string.IsNullOrWhiteSpace(surname), x => x.Surname.Contains(surname))
.WhereIf(isLockedOut.HasValue, x => (x.LockoutEnabled && x.LockoutEnd.HasValue && x.LockoutEnd.Value.CompareTo(DateTime.UtcNow) > 0) == isLockedOut.Value)
.WhereIf(notActive.HasValue, x => x.IsActive == !notActive.Value)
.WhereIf(emailConfirmed.HasValue, x => x.EmailConfirmed == emailConfirmed.Value)
.WhereIf(isExternal.HasValue, x => x.IsExternal == isExternal.Value)
.WhereIf(maxCreationTime != null, p => p.CreationTime <= maxCreationTime)
.WhereIf(minCreationTime != null, p => p.CreationTime >= minCreationTime)
.WhereIf(maxModifitionTime != null, p => p.LastModificationTime <= maxModifitionTime)
.WhereIf(minModifitionTime != null, p => p.LastModificationTime >= minModifitionTime)
.OrderBy(sorting.IsNullOrWhiteSpace() ? nameof(IdentityUser.UserName) : sorting) .OrderBy(sorting.IsNullOrWhiteSpace() ? nameof(IdentityUser.UserName) : sorting)
.PageBy(skipCount, maxResultCount) .PageBy(skipCount, maxResultCount)
.ToListAsync(GetCancellationToken(cancellationToken)); .ToListAsync(GetCancellationToken(cancellationToken));
@ -288,41 +273,25 @@ public class EfCoreIdentityUserRepository : EfCoreRepository<IIdentityDbContext,
DateTime? minModifitionTime = null, DateTime? minModifitionTime = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
var upperFilter = filter?.ToUpperInvariant(); return await (await GetFilteredQueryableAsync(
var query = await GetQueryableAsync(); filter,
roleId,
if (roleId.HasValue) organizationUnitId,
{ userName,
var dbContext = await GetDbContextAsync(); phoneNumber,
var organizationUnitIds = await dbContext.Set<OrganizationUnitRole>().Where(q => q.RoleId == roleId.Value).Select(q => q.OrganizationUnitId).ToArrayAsync(cancellationToken: cancellationToken); emailAddress,
query = query.Where(identityUser => identityUser.Roles.Any(x => x.RoleId == roleId.Value) || identityUser.OrganizationUnits.Any(x => organizationUnitIds.Contains(x.OrganizationUnitId))); name,
} surname,
isLockedOut,
return await query notActive,
.WhereIf( emailConfirmed,
!filter.IsNullOrWhiteSpace(), isExternal,
u => maxCreationTime,
u.NormalizedUserName.Contains(upperFilter) || minCreationTime,
u.NormalizedEmail.Contains(upperFilter) || maxModifitionTime,
(u.Name != null && u.Name.Contains(filter)) || minModifitionTime,
(u.Surname != null && u.Surname.Contains(filter)) || cancellationToken
(u.PhoneNumber != null && u.PhoneNumber.Contains(filter)) )).LongCountAsync(GetCancellationToken(cancellationToken));
)
.WhereIf(organizationUnitId.HasValue, identityUser => identityUser.OrganizationUnits.Any(x => x.OrganizationUnitId == organizationUnitId.Value))
.WhereIf(!string.IsNullOrWhiteSpace(userName), x => x.UserName == userName)
.WhereIf(!string.IsNullOrWhiteSpace(phoneNumber), x => x.PhoneNumber == phoneNumber)
.WhereIf(!string.IsNullOrWhiteSpace(emailAddress), x => x.Email == emailAddress)
.WhereIf(!string.IsNullOrWhiteSpace(name), x => x.Name == name)
.WhereIf(!string.IsNullOrWhiteSpace(surname), x => x.Surname == surname)
.WhereIf(isLockedOut.HasValue, x => (x.LockoutEnabled && x.LockoutEnd.HasValue && x.LockoutEnd.Value.CompareTo(DateTime.UtcNow) > 0) == isLockedOut.Value)
.WhereIf(notActive.HasValue, x => x.IsActive == !notActive.Value)
.WhereIf(emailConfirmed.HasValue, x => x.EmailConfirmed == emailConfirmed.Value)
.WhereIf(isExternal.HasValue, x => x.IsExternal == isExternal.Value)
.WhereIf(maxCreationTime != null, p => p.CreationTime <= maxCreationTime)
.WhereIf(minCreationTime != null, p => p.CreationTime >= minCreationTime)
.WhereIf(maxModifitionTime != null, p => p.LastModificationTime <= maxModifitionTime)
.WhereIf(minModifitionTime != null, p => p.LastModificationTime >= minModifitionTime)
.LongCountAsync(GetCancellationToken(cancellationToken));
} }
public virtual async Task<List<OrganizationUnit>> GetOrganizationUnitsAsync( public virtual async Task<List<OrganizationUnit>> GetOrganizationUnitsAsync(
@ -446,4 +415,59 @@ public class EfCoreIdentityUserRepository : EfCoreRepository<IIdentityDbContext,
await (await GetDbContextAsync()).Set<IdentityUserOrganizationUnit>().Where(x => x.OrganizationUnitId == sourceOrganizationId).ExecuteDeleteAsync(GetCancellationToken(cancellationToken)); await (await GetDbContextAsync()).Set<IdentityUserOrganizationUnit>().Where(x => x.OrganizationUnitId == sourceOrganizationId).ExecuteDeleteAsync(GetCancellationToken(cancellationToken));
} }
} }
protected virtual async Task<IQueryable<IdentityUser> GetFilteredQueryableAsync(
string filter = null,
Guid? roleId = null,
Guid? organizationUnitId = null,
string userName = null,
string phoneNumber = null,
string emailAddress = null,
string name = null,
string surname = null,
bool? isLockedOut = null,
bool? notActive = null,
bool? emailConfirmed = null,
bool? isExternal = null,
DateTime? maxCreationTime = null,
DateTime? minCreationTime = null,
DateTime? maxModifitionTime = null,
DateTime? minModifitionTime = null,
CancellationToken cancellationToken = default)
{
var upperFilter = filter?.ToUpperInvariant();
var query = await GetQueryableAsync();
if (roleId.HasValue)
{
var dbContext = await GetDbContextAsync();
var organizationUnitIds = await dbContext.Set<OrganizationUnitRole>().Where(q => q.RoleId == roleId.Value).Select(q => q.OrganizationUnitId).ToArrayAsync(cancellationToken: cancellationToken);
query = query.Where(identityUser => identityUser.Roles.Any(x => x.RoleId == roleId.Value) || identityUser.OrganizationUnits.Any(x => organizationUnitIds.Contains(x.OrganizationUnitId)));
}
return query
.WhereIf(
!filter.IsNullOrWhiteSpace(),
u =>
u.NormalizedUserName.Contains(upperFilter) ||
u.NormalizedEmail.Contains(upperFilter) ||
(u.Name != null && u.Name.Contains(filter)) ||
(u.Surname != null && u.Surname.Contains(filter)) ||
(u.PhoneNumber != null && u.PhoneNumber.Contains(filter))
)
.WhereIf(organizationUnitId.HasValue, identityUser => identityUser.OrganizationUnits.Any(x => x.OrganizationUnitId == organizationUnitId.Value))
.WhereIf(!string.IsNullOrWhiteSpace(userName), x => x.UserName == userName)
.WhereIf(!string.IsNullOrWhiteSpace(phoneNumber), x => x.PhoneNumber == phoneNumber)
.WhereIf(!string.IsNullOrWhiteSpace(emailAddress), x => x.Email == emailAddress)
.WhereIf(!string.IsNullOrWhiteSpace(name), x => x.Name == name)
.WhereIf(!string.IsNullOrWhiteSpace(surname), x => x.Surname == surname)
.WhereIf(isLockedOut.HasValue, x => (x.LockoutEnabled && x.LockoutEnd.HasValue && x.LockoutEnd.Value.CompareTo(DateTime.UtcNow) > 0) == isLockedOut.Value)
.WhereIf(notActive.HasValue, x => x.IsActive == !notActive.Value)
.WhereIf(emailConfirmed.HasValue, x => x.EmailConfirmed == emailConfirmed.Value)
.WhereIf(isExternal.HasValue, x => x.IsExternal == isExternal.Value)
.WhereIf(maxCreationTime != null, p => p.CreationTime <= maxCreationTime)
.WhereIf(minCreationTime != null, p => p.CreationTime >= minCreationTime)
.WhereIf(maxModifitionTime != null, p => p.LastModificationTime <= maxModifitionTime)
.WhereIf(minModifitionTime != null, p => p.LastModificationTime >= minModifitionTime);
}
} }

176
modules/identity/src/Volo.Abp.Identity.MongoDB/Volo/Abp/Identity/MongoDB/MongoIdentityUserRepository.cs

@ -164,45 +164,28 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb
DateTime? maxModifitionTime = null, DateTime? maxModifitionTime = null,
DateTime? minModifitionTime = null, DateTime? minModifitionTime = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
var upperFilter = filter?.ToUpperInvariant(); var query = await GetFilteredQueryableAsync(
var query = await GetMongoQueryableAsync(cancellationToken); filter,
roleId,
if (roleId.HasValue) organizationUnitId,
{ userName,
var organizationUnitIds = (await GetMongoQueryableAsync<OrganizationUnit>(cancellationToken)) phoneNumber,
.Where(ou => ou.Roles.Any(r => r.RoleId == roleId.Value)) emailAddress,
.Select(userOrganizationUnit => userOrganizationUnit.Id) name,
.ToArray(); surname,
isLockedOut,
query = query.Where(identityUser => identityUser.Roles.Any(x => x.RoleId == roleId.Value) || identityUser.OrganizationUnits.Any(x => organizationUnitIds.Contains(x.OrganizationUnitId))); notActive,
} emailConfirmed,
isExternal,
maxCreationTime,
minCreationTime,
maxModifitionTime,
minModifitionTime,
cancellationToken
);
return await query return await query
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(
!filter.IsNullOrWhiteSpace(),
u =>
u.NormalizedUserName.Contains(upperFilter) ||
u.NormalizedEmail.Contains(upperFilter) ||
(u.Name != null && u.Name.Contains(filter)) ||
(u.Surname != null && u.Surname.Contains(filter)) ||
(u.PhoneNumber != null && u.PhoneNumber.Contains(filter))
)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(organizationUnitId.HasValue, identityUser => identityUser.OrganizationUnits.Any(x => x.OrganizationUnitId == organizationUnitId.Value))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(userName), x => x.UserName.Contains(userName))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(phoneNumber), x => x.PhoneNumber.Contains(phoneNumber))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(emailAddress), x => x.Email.Contains(emailAddress))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(name), x => x.Name.Contains(name))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(surname), x => x.Surname.Contains(surname))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isLockedOut.HasValue && isLockedOut.Value, x => x.LockoutEnabled && x.LockoutEnd != null && x.LockoutEnd > DateTimeOffset.UtcNow)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isLockedOut.HasValue && !isLockedOut.Value, x => !(x.LockoutEnabled && x.LockoutEnd != null && x.LockoutEnd > DateTimeOffset.UtcNow))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(notActive.HasValue, x => x.IsActive == !notActive.Value)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(emailConfirmed.HasValue, x => x.EmailConfirmed == emailConfirmed.Value)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isExternal.HasValue, x => x.IsExternal == isExternal.Value)
.WhereIf(maxCreationTime != null, p => p.CreationTime <= maxCreationTime)
.WhereIf(minCreationTime != null, p => p.CreationTime >= minCreationTime)
.WhereIf(maxModifitionTime != null, p => p.LastModificationTime <= maxModifitionTime)
.WhereIf(minModifitionTime != null, p => p.LastModificationTime >= minModifitionTime)
.OrderBy(sorting.IsNullOrWhiteSpace() ? nameof(IdentityUser.UserName) : sorting) .OrderBy(sorting.IsNullOrWhiteSpace() ? nameof(IdentityUser.UserName) : sorting)
.As<IMongoQueryable<IdentityUser>>() .As<IMongoQueryable<IdentityUser>>()
.PageBy<IdentityUser, IMongoQueryable<IdentityUser>>(skipCount, maxResultCount) .PageBy<IdentityUser, IMongoQueryable<IdentityUser>>(skipCount, maxResultCount)
@ -262,45 +245,27 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb
DateTime? minModifitionTime = null, DateTime? minModifitionTime = null,
CancellationToken cancellationToken = default) CancellationToken cancellationToken = default)
{ {
var upperFilter = filter?.ToUpperInvariant(); var query = await GetFilteredQueryableAsync(
var query = await GetMongoQueryableAsync(cancellationToken); filter,
roleId,
if (roleId.HasValue) organizationUnitId,
{ userName,
var organizationUnitIds = (await GetMongoQueryableAsync<OrganizationUnit>(cancellationToken)) phoneNumber,
.Where(ou => ou.Roles.Any(r => r.RoleId == roleId.Value)) emailAddress,
.Select(userOrganizationUnit => userOrganizationUnit.Id) name,
.ToArray(); surname,
isLockedOut,
query = query.Where(identityUser => identityUser.Roles.Any(x => x.RoleId == roleId.Value) || identityUser.OrganizationUnits.Any(x => organizationUnitIds.Contains(x.OrganizationUnitId))); notActive,
} emailConfirmed,
isExternal,
return await query maxCreationTime,
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>( minCreationTime,
!filter.IsNullOrWhiteSpace(), maxModifitionTime,
u => minModifitionTime,
u.NormalizedUserName.Contains(upperFilter) || cancellationToken
u.NormalizedEmail.Contains(upperFilter) || );
(u.Name != null && u.Name.Contains(filter)) ||
(u.Surname != null && u.Surname.Contains(filter)) || return await query.LongCountAsync(GetCancellationToken(cancellationToken));
(u.PhoneNumber != null && u.PhoneNumber.Contains(filter))
)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(organizationUnitId.HasValue, identityUser => identityUser.OrganizationUnits.Any(x => x.OrganizationUnitId == organizationUnitId.Value))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(userName), x => x.UserName == userName)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(phoneNumber), x => x.PhoneNumber == phoneNumber)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(emailAddress), x => x.Email == emailAddress)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(name), x => x.Name == name)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(surname), x => x.Surname == surname)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isLockedOut.HasValue && isLockedOut.Value, x => x.LockoutEnabled && x.LockoutEnd != null && x.LockoutEnd > DateTimeOffset.UtcNow)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isLockedOut.HasValue && !isLockedOut.Value, x => !(x.LockoutEnabled && x.LockoutEnd != null && x.LockoutEnd > DateTimeOffset.UtcNow))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(notActive.HasValue, x => x.IsActive == !notActive.Value)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(emailConfirmed.HasValue, x => x.EmailConfirmed == emailConfirmed.Value)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isExternal.HasValue, x => x.IsExternal == isExternal.Value)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(maxCreationTime != null, p => p.CreationTime <= maxCreationTime)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(minCreationTime != null, p => p.CreationTime >= minCreationTime)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(maxModifitionTime != null, p => p.LastModificationTime <= maxModifitionTime)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(minModifitionTime != null, p => p.LastModificationTime >= minModifitionTime)
.LongCountAsync(GetCancellationToken(cancellationToken));
} }
public virtual async Task<List<IdentityUser>> GetUsersInOrganizationUnitAsync( public virtual async Task<List<IdentityUser>> GetUsersInOrganizationUnitAsync(
@ -442,4 +407,63 @@ public class MongoIdentityUserRepository : MongoDbRepository<IAbpIdentityMongoDb
return result; return result;
} }
protected virtual async Task<IMongoQueryable<IdentityUser>> GetFilteredQueryableAsync(
string filter = null,
Guid? roleId = null,
Guid? organizationUnitId = null,
string userName = null,
string phoneNumber = null,
string emailAddress = null,
string name = null,
string surname = null,
bool? isLockedOut = null,
bool? notActive = null,
bool? emailConfirmed = null,
bool? isExternal = null,
DateTime? maxCreationTime = null,
DateTime? minCreationTime = null,
DateTime? maxModifitionTime = null,
DateTime? minModifitionTime = null,
CancellationToken cancellationToken = default)
{
var upperFilter = filter?.ToUpperInvariant();
var query = await GetMongoQueryableAsync(cancellationToken);
if (roleId.HasValue)
{
var organizationUnitIds = (await GetMongoQueryableAsync<OrganizationUnit>(cancellationToken))
.Where(ou => ou.Roles.Any(r => r.RoleId == roleId.Value))
.Select(userOrganizationUnit => userOrganizationUnit.Id)
.ToArray();
query = query.Where(identityUser => identityUser.Roles.Any(x => x.RoleId == roleId.Value) || identityUser.OrganizationUnits.Any(x => organizationUnitIds.Contains(x.OrganizationUnitId)));
}
return query
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(
!filter.IsNullOrWhiteSpace(),
u =>
u.NormalizedUserName.Contains(upperFilter) ||
u.NormalizedEmail.Contains(upperFilter) ||
(u.Name != null && u.Name.Contains(filter)) ||
(u.Surname != null && u.Surname.Contains(filter)) ||
(u.PhoneNumber != null && u.PhoneNumber.Contains(filter))
)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(organizationUnitId.HasValue, identityUser => identityUser.OrganizationUnits.Any(x => x.OrganizationUnitId == organizationUnitId.Value))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(userName), x => x.UserName == userName)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(phoneNumber), x => x.PhoneNumber == phoneNumber)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(emailAddress), x => x.Email == emailAddress)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(name), x => x.Name == name)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(!string.IsNullOrWhiteSpace(surname), x => x.Surname == surname)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isLockedOut.HasValue && isLockedOut.Value, x => x.LockoutEnabled && x.LockoutEnd != null && x.LockoutEnd > DateTimeOffset.UtcNow)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isLockedOut.HasValue && !isLockedOut.Value, x => !(x.LockoutEnabled && x.LockoutEnd != null && x.LockoutEnd > DateTimeOffset.UtcNow))
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(notActive.HasValue, x => x.IsActive == !notActive.Value)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(emailConfirmed.HasValue, x => x.EmailConfirmed == emailConfirmed.Value)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(isExternal.HasValue, x => x.IsExternal == isExternal.Value)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(maxCreationTime != null, p => p.CreationTime <= maxCreationTime)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(minCreationTime != null, p => p.CreationTime >= minCreationTime)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(maxModifitionTime != null, p => p.LastModificationTime <= maxModifitionTime)
.WhereIf<IdentityUser, IMongoQueryable<IdentityUser>>(minModifitionTime != null, p => p.LastModificationTime >= minModifitionTime);
}
} }

Loading…
Cancel
Save