public async Task <IActionResult> GetChapterDetails(string searchPattern, int start, int pageSize) { GoNorthProject project = await _projectDbAccess.GetDefaultProject(); Task <List <AikaChapterDetail> > queryTask; Task <int> countTask; if (string.IsNullOrEmpty(searchPattern)) { queryTask = _chapterDetailDbAccess.GetChapterDetailsByProjectId(project.Id, start, pageSize); countTask = _chapterDetailDbAccess.GetChapterDetailsByProjectIdCount(project.Id); } else { queryTask = _chapterDetailDbAccess.SearchChapterDetails(project.Id, searchPattern, start, pageSize); countTask = _chapterDetailDbAccess.SearchChapterDetailsCount(project.Id, searchPattern); } Task.WaitAll(queryTask, countTask); ChapterDetailQueryResult queryResult = new ChapterDetailQueryResult(); queryResult.Details = queryTask.Result; queryResult.HasMore = start + queryResult.Details.Count < countTask.Result; return(Ok(queryResult)); }