コード例 #1
0
        public Task <SearchResourceSetResult> Execute(SearchResourceSetParameter parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            return(_resourceSetRepository.Search(parameter));
        }
コード例 #2
0
        public async Task <SearchResourceSetResult> Search(SearchResourceSetParameter parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            IQueryable <Models.ResourceSet> resourceSet = _context.ResourceSets
                                                          .Include(r => r.ResourceSetPolicies).ThenInclude(r => r.Policy).ThenInclude(r => r.Claims)
                                                          .Include(r => r.ResourceSetPolicies).ThenInclude(r => r.Policy).ThenInclude(r => r.Scopes)
                                                          .Include(r => r.ResourceSetPolicies).ThenInclude(r => r.Policy).ThenInclude(r => r.Clients)
                                                          .Include(r => r.Scopes);

            if (parameter.Ids != null && parameter.Ids.Any())
            {
                resourceSet = resourceSet.Where(r => parameter.Ids.Contains(r.Id));
            }

            if (parameter.Names != null && parameter.Names.Any())
            {
                resourceSet = resourceSet.Where(r => parameter.Names.Any(n => r.Name.Contains(n)));
            }

            if (parameter.Types != null && parameter.Types.Any())
            {
                resourceSet = resourceSet.Where(r => parameter.Types.Any(t => r.Type.Contains(t)));
            }

            if (parameter.Owners != null && parameter.Owners.Any())
            {
                resourceSet = resourceSet.Where(r => parameter.Owners.Contains(r.Owner));
            }

            if (parameter.Subjects != null && parameter.Subjects.Any())
            {
                resourceSet = resourceSet.Where(r => r.ResourceSetPolicies.Any(p => p.Policy != null && p.Policy.Claims != null && p.Policy.Claims.Any(c => c.Key == "sub" && parameter.Subjects.Contains(c.Value))));
            }

            var nbResult = await resourceSet.CountAsync().ConfigureAwait(false);

            resourceSet = resourceSet.OrderBy(c => c.Id);
            if (parameter.IsPagingEnabled)
            {
                resourceSet = resourceSet.Skip(parameter.StartIndex).Take(parameter.Count);
            }

            return(new SearchResourceSetResult
            {
                Content = await resourceSet.Select(c => c.ToDomain()).ToListAsync().ConfigureAwait(false),
                StartIndex = parameter.StartIndex,
                TotalResults = nbResult
            });
        }
コード例 #3
0
        public Task <SearchResourceSetResult> Search(SearchResourceSetParameter parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            IEnumerable <ResourceSet> result = Resources.Select(r => r.Copy()).Select(r => Enrich(r)).ToList();

            if (parameter.Ids != null && parameter.Ids.Any())
            {
                result = result.Where(r => parameter.Ids.Contains(r.Id));
            }

            if (parameter.Names != null && parameter.Names.Any())
            {
                result = result.Where(r => parameter.Names.Any(n => r.Name.Contains(n)));
            }

            if (parameter.Types != null && parameter.Types.Any())
            {
                result = result.Where(r => parameter.Types.Any(t => r.Type.Contains(t)));
            }

            if (parameter.Owners != null && parameter.Owners.Any())
            {
                result = result.Where(r => parameter.Owners.Contains(r.Owner));
            }

            if (parameter.Subjects != null && parameter.Subjects.Any())
            {
                result = result.Where(r => r.AuthPolicies.Any(p => p.Claims != null && p.Claims.Any(c => c.Type == "sub" && parameter.Subjects.Contains(c.Value))));
            }

            var nbResult = result.Count();

            result = result.OrderBy(c => c.Id);
            if (parameter.IsPagingEnabled)
            {
                result = result.Skip(parameter.StartIndex).Take(parameter.Count);
            }

            var content = result.ToList();

            return(Task.FromResult(new SearchResourceSetResult
            {
                Content = content,
                StartIndex = parameter.StartIndex,
                TotalResults = nbResult
            }));
        }
コード例 #4
0
        public Task <SearchResourceSetResult> Execute(SearchCurrentUserResourceSetParameter searchCurrentUserResourceSetParameter)
        {
            if (searchCurrentUserResourceSetParameter == null)
            {
                throw new ArgumentNullException(nameof(searchCurrentUserResourceSetParameter));
            }

            var parameter = new SearchResourceSetParameter
            {
                Owners     = new[] { searchCurrentUserResourceSetParameter.Owner },
                StartIndex = searchCurrentUserResourceSetParameter.StartIndex,
                Count      = searchCurrentUserResourceSetParameter.Count
            };

            return(_resourceSetRepository.Search(parameter));
        }
コード例 #5
0
        public Task <SearchResourceSetResult> Search(SearchResourceSetParameter parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            IEnumerable <ResourceSet> result = _resources;

            if (parameter.Ids != null && parameter.Ids.Any())
            {
                result = result.Where(r => parameter.Ids.Contains(r.Id));
            }

            if (parameter.Names != null && parameter.Names.Any())
            {
                result = result.Where(r => parameter.Names.Any(n => r.Name.Contains(n)));
            }

            if (parameter.Types != null && parameter.Types.Any())
            {
                result = result.Where(r => parameter.Types.Any(t => r.Type.Contains(t)));
            }

            var nbResult = result.Count();

            result = result.OrderBy(c => c.Id);
            if (parameter.IsPagingEnabled)
            {
                result = result.Skip(parameter.StartIndex).Take(parameter.Count);
            }

            return(Task.FromResult(new SearchResourceSetResult
            {
                Content = result.Select(r => r.Copy()),
                StartIndex = parameter.StartIndex,
                TotalResults = nbResult
            }));
        }
コード例 #6
0
 public Task <SearchResourceSetResult> Search(SearchResourceSetParameter parameter)
 {
     return(_searchResourceSetOperation.Execute(parameter));
 }