public async Task <PagedQueryResult <UserSummary> > ExecuteAsync(SearchUserSummariesQuery query, IExecutionContext executionContext) { var dbPagedResult = await CreateQuery(query).ToPagedResultAsync(query); var mappedResult = dbPagedResult .Items .Select(_userSummaryMapper.Map); return(dbPagedResult.ChangeType(mappedResult)); }
public IEnumerable <IPermissionApplication> GetPermissions(SearchUserSummariesQuery query) { if (query.UserAreaCode == CofoundryAdminUserArea.AreaCode) { yield return(new CofoundryUserReadPermission()); } else { yield return(new NonCofoundryUserReadPermission()); } }
private IQueryable <User> CreateQuery(SearchUserSummariesQuery query) { var dbQuery = _dbContext .Users .AsNoTracking() .Include(u => u.Role) .Include(u => u.Creator) .FilterCanLogIn() .Where(p => p.UserAreaCode == query.UserAreaCode); if (!string.IsNullOrEmpty(query.Email)) { dbQuery = dbQuery.Where(u => u.Email.Contains(query.Email)); } // Filter by name if (!string.IsNullOrEmpty(query.Name)) { var names = query.Name.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); foreach (string name in names) { // See http://stackoverflow.com/a/7288269/486434 for why this is copied into a new variable string localName = name; dbQuery = dbQuery.Where(u => u.FirstName.Contains(localName) || u.LastName.Contains(localName)); } // Order by exact matches first dbQuery = dbQuery .OrderByDescending(u => names.Contains(u.FirstName) && names.Contains(u.LastName)) .ThenByDescending(u => names.Contains(u.FirstName) || names.Contains(u.LastName)); } else { dbQuery = dbQuery.OrderBy(u => u.LastName); } return(dbQuery); }
public IContentRepositoryQueryContext <PagedQueryResult <UserSummary> > AsSummaries(SearchUserSummariesQuery query) { return(ContentRepositoryQueryContextFactory.Create(query, ExtendableContentRepository)); }
public async Task <PagedQueryResult <UserSummary> > ExecuteAsync(SearchUserSummariesQuery query, IExecutionContext executionContext) { var result = await CreateQuery(query).ToPagedResultAsync(query); return(result); }
/// <summary> /// Seaches users based on simple filter criteria and returns a paged result. /// </summary> /// <param name="query">Search query parameters.</param> /// <param name="executionContext">Optional execution context to use when executing the query. Useful if you need to temporarily elevate your permission level.</param> public Task <PagedQueryResult <UserSummary> > SearchUserSummariesAsync(SearchUserSummariesQuery query, IExecutionContext executionContext = null) { return(_queryExecutor.ExecuteAsync(query, executionContext)); }
public Task <PagedQueryResult <UserSummary> > AsSummariesAsync(SearchUserSummariesQuery query) { return(ExtendableContentRepository.ExecuteQueryAsync(query)); }