public override async Task <PageModel <WordModel> > ExecuteAsync(GetWordsStartingWithQuery 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.StartsWith(query.StartingWith)) : database.Word.Where(x => x.Title.StartsWith(query.StartingWith)); 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>()) }); } }
public override async Task <PageModel <WordModel> > ExecuteAsync(GetWordsStartingWithQuery query, CancellationToken cancellationToken = new CancellationToken()) { return(await _apiClient.Get <PageModel <WordModel> >($"api/dictionaries/{query.DictionaryId}/words/startWith/{query.StartingWith}?pageNumber={query.PageNumber}&pageSize={query.PageSize}")); }