public async Task <SearchPendingRequestResult> Search(SearchPendingRequestParameter parameter) { var result = new SearchPendingRequestResult(); IQueryable <ResourcePendingRequest> content = _context.PendingRequests .Include(p => p.Resource).ThenInclude(p => p.Scopes) .Include(p => p.Scopes); if (parameter.Owners != null) { content = content.Where(c => parameter.Owners.Contains(c.Resource.Owner)); } if (parameter.IsConfirmed != null) { content = content.Where(c => c.IsConfirmed == parameter.IsConfirmed.Value); } var totalResults = await _context.PendingRequests.CountAsync().ConfigureAwait(false); if (parameter.IsPagingEnabled) { content = content.Skip(parameter.StartIndex).Take(parameter.Count); } var lst = await content.ToListAsync().ConfigureAwait(false); result.TotalResults = totalResults; result.PendingRequests = lst.Select(r => r.ToDomain()); result.StartIndex = parameter.StartIndex; return(result); }
public Task <SearchPendingRequestResult> Search(SearchPendingRequestParameter parameter) { var result = new SearchPendingRequestResult(); var content = _pendingRequestLst.Select(p => { var r = new PendingRequest { Id = p.Id, Scopes = p.Scopes, ResourceId = p.ResourceId, CreateDateTime = p.CreateDateTime, IsConfirmed = p.IsConfirmed, RequesterSubject = p.RequesterSubject }; Enrich(r); return(r); }); if (parameter.Owners != null) { content = content.Where(c => parameter.Owners.Contains(c.Resource.Owner)); } if (parameter.IsConfirmed != null) { content = content.Where(c => c.IsConfirmed == parameter.IsConfirmed.Value); } var count = _pendingRequestLst.Count(); if (parameter.IsPagingEnabled) { content = content.Skip(parameter.StartIndex).Take(parameter.Count); } result.PendingRequests = content; result.TotalResults = count; result.StartIndex = parameter.StartIndex; return(Task.FromResult(result)); }