예제 #1
0
        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));
        }
예제 #2
0
 public async Task <List <EpisodeDTO> > Get()
 {
     return(await _episodesService.GetAllEpisodes().ToListAsync());
 }