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 }); }
public Task <SearchScopeResult> Search(SearchScopesParameter parameter) { return(_searchScopesOperation.Execute(parameter)); }