Пример #1
0
        public override async Task <PageModel <WordModel> > ExecuteAsync(SearchWordsByDictionaryIdQuery query, CancellationToken cancellationToken = new CancellationToken())
        {
            using (var database = _databaseProvider.GetDatabaseForDictionary(query.DictionaryId))
            {
                var wordIndices = query.DictionaryId > 0
                    ? database.Word.Where(
                    x => x.DictionaryId == query.DictionaryId && x.Title.Contains(query.Query))
                    : database.Word.Where(x => x.Title.Contains(query.Query));

                var count = wordIndices.Count();
                var data  = await wordIndices
                            .OrderBy(x => x.Title.Length)
                            .ThenBy(x => x.Title)
                            .Paginate(query.PageNumber, query.PageSize)
                            .ToListAsync(cancellationToken);

                return(new PageModel <WordModel>
                {
                    CurrentPageIndex = query.PageNumber,
                    PageSize = query.PageSize,
                    PageCount = count,
                    Data = data.Select(w => w.Map <Word, WordModel>())
                });
            }
        }
Пример #2
0
 public override async Task <PageModel <WordModel> > ExecuteAsync(SearchWordsByDictionaryIdQuery query, CancellationToken cancellationToken = new CancellationToken())
 {
     return(await _apiClient.Get <PageModel <WordModel> >($"api/dictionaries/{query.DictionaryId}/Search?query={query.Query}pageNumber={query.PageNumber}&pageSize={query.PageSize}"));
 }