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);
        }
示例#2
0
        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));
        }