public async Task <PageResponse <Character> > List(GetCharactersQuery query) { var characters = await _characterRepository.GetAllCharacters() .Select(x => new CharacterDTO(x.Id, x.Name, x.Planet)) .PickPage(query); var episodes = _episodesService.GetAllEpisodes().ToList(); var charactersIds = characters.Results.Select(x => x.Id); var episodeCharactersTask = _episodesService.GetAllEpisodesCharacters(charactersIds); var friendsTasks = Task.FromResult(_characterRepository.GetAllCharactersFriends(charactersIds) .Select(x => new CharacterFriendDTO(x.Id, x.FriendId)) .ToList()); await Task.WhenAll(episodeCharactersTask, friendsTasks); return(characters.ComposeCharacters(episodes, friendsTasks.Result, episodeCharactersTask.Result)); }
public async Task <List <EpisodeDTO> > Get() { return(await _episodesService.GetAllEpisodes().ToListAsync()); }