public Task <SearchScopeResult> Search(SearchScopesParameter parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            IEnumerable <Scope> result = _scopes;

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

            if (parameter.Types != null && parameter.Types.Any())
            {
                var scopeTypes = parameter.Types.Select(t => (ScopeType)t);
                result = result.Where(s => scopeTypes.Contains(s.Type));
            }

            var nbResult = result.Count();

            if (parameter.Order != null)
            {
                switch (parameter.Order.Target)
                {
                case "update_datetime":
                    switch (parameter.Order.Type)
                    {
                    case OrderTypes.Asc:
                        result = result.OrderBy(c => c.UpdateDateTime);
                        break;

                    case OrderTypes.Desc:
                        result = result.OrderByDescending(c => c.UpdateDateTime);
                        break;
                    }
                    break;
                }
            }
            else
            {
                result = result.OrderByDescending(c => c.UpdateDateTime);
            }

            if (parameter.IsPagingEnabled)
            {
                result = result.Skip(parameter.StartIndex).Take(parameter.Count);
            }

            return(Task.FromResult(new SearchScopeResult
            {
                Content = result.Select(r => r.Copy()),
                StartIndex = parameter.StartIndex,
                TotalResults = nbResult
            }));
        }
        public Task <SearchScopeResult> Execute(SearchScopesParameter parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            return(_scopeRepository.Search(parameter));
        }
        public async Task <SearchScopeResult> Search(SearchScopesParameter parameter)
        {
            if (parameter == null)
            {
                throw new ArgumentNullException(nameof(parameter));
            }

            IQueryable <Models.Scope> scopes = _context.Scopes;

            if (parameter.ScopeNames != null && parameter.ScopeNames.Any())
            {
                scopes = scopes.Where(c => parameter.ScopeNames.Any(n => c.Name.Contains(n)));
            }

            if (parameter.Types != null && parameter.Types.Any())
            {
                var scopeTypes = parameter.Types.Select(t => (Models.ScopeType)t);
                scopes = scopes.Where(s => scopeTypes.Contains(s.Type));
            }

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

            if (parameter.Order != null)
            {
                switch (parameter.Order.Target)
                {
                case "update_datetime":
                    switch (parameter.Order.Type)
                    {
                    case OrderTypes.Asc:
                        scopes = scopes.OrderBy(c => c.UpdateDateTime);
                        break;

                    case OrderTypes.Desc:
                        scopes = scopes.OrderByDescending(c => c.UpdateDateTime);
                        break;
                    }
                    break;
                }
            }
            else
            {
                scopes = scopes.OrderByDescending(c => c.UpdateDateTime);
            }

            if (parameter.IsPagingEnabled)
            {
                scopes = scopes.Skip(parameter.StartIndex).Take(parameter.Count);
            }

            return(new SearchScopeResult
            {
                Content = await scopes.Select(c => c.ToDomain()).ToListAsync().ConfigureAwait(false),
                StartIndex = parameter.StartIndex,
                TotalResults = nbResult
            });
        }
Esempio n. 4
0
 public Task <SearchScopeResult> Search(SearchScopesParameter parameter)
 {
     return(_searchScopesOperation.Execute(parameter));
 }