Beispiel #1
0
        public async Task <ICollection <AnimeComparisonEntryDto> > GetAnimeComparison(AnimeComparisonSearchCriteria searchCriteria)
        {
            ICollection <AnimeComparisonEntry> partialResults = new List <AnimeComparisonEntry>();

            for (int i = 0; i < searchCriteria.AnimeMalId.Count; i++)
            {
                var roles = await roleRepository.GetAllAsync(x =>
                                                             x.AnimeId.Equals(searchCriteria.AnimeMalId.ToArray()[i]) &&
                                                             x.LanguageId == 1,
                                                             roleRepository.IncludeExpression);

                foreach (var role in roles)
                {
                    if (partialResults.Any(x => x.Seiyuu.MalId.Equals(role.SeiyuuId)))
                    {
                        var foundSeiyuu = partialResults.Single(x => x.Seiyuu.MalId.Equals(role.SeiyuuId));

                        if (foundSeiyuu.AnimeCharacters.Any(x => x.Anime.MalId.Equals(role.AnimeId)))
                        {
                            var foundAnime = foundSeiyuu.AnimeCharacters.Single(x => x.Anime.MalId.Equals(role.AnimeId));
                            foundAnime.Characters.Add(role.Character);
                        }
                        else
                        {
                            foundSeiyuu.AnimeCharacters.Add(new AnimeComparisonSubEntry(role.Character, role.Anime));
                        }
                    }
                    else
                    {
                        AnimeComparisonEntry newComparisonEntry = new AnimeComparisonEntry
                        {
                            Seiyuu = role.Seiyuu
                        };
                        newComparisonEntry.AnimeCharacters.Add(new AnimeComparisonSubEntry(role.Character, role.Anime));
                        partialResults.Add(newComparisonEntry);
                    }
                }

                partialResults = partialResults.Where(x => x.AnimeCharacters.Select(y => y.Anime).ToList().Count >= i + 1).ToList();
            }

            return(mapper.Map <ICollection <AnimeComparisonEntryDto> >(partialResults));
        }
Beispiel #2
0
        public async Task <ICollection <AnimeComparisonEntryDto> > HandleAsync(CompareAnimeQuery query)
        {
            ICollection <AnimeComparisonEntry> partialResults = new List <AnimeComparisonEntry>();

            for (int i = 0; i < query.AnimeMalIds.Count; i++)
            {
                var roles = await _roleRepository.GetAllRolesInAnimeByMalIdAsync(query.AnimeMalIds.ElementAt(i));

                foreach (var role in roles)
                {
                    if (partialResults.Any(x => x.Seiyuu.Id.Equals(role.SeiyuuId)))
                    {
                        var foundSeiyuu = partialResults.Single(x => x.Seiyuu.Id.Equals(role.SeiyuuId));

                        if (foundSeiyuu.AnimeCharacters.Any(x => x.Anime.Id.Equals(role.AnimeId)))
                        {
                            var foundAnime = foundSeiyuu.AnimeCharacters.Single(x => x.Anime.Id.Equals(role.AnimeId));
                            foundAnime.Characters.Add(role.Character);
                        }
                        else
                        {
                            foundSeiyuu.AnimeCharacters.Add(new AnimeComparisonSubEntry(role.Character, role.Anime));
                        }
                    }
                    else
                    {
                        AnimeComparisonEntry newComparisonEntry = new AnimeComparisonEntry
                        {
                            Seiyuu = role.Seiyuu
                        };
                        newComparisonEntry.AnimeCharacters.Add(new AnimeComparisonSubEntry(role.Character, role.Anime));
                        partialResults.Add(newComparisonEntry);
                    }
                }

                partialResults = partialResults.Where(x => x.AnimeCharacters.Select(y => y.Anime).ToList().Count >= i + 1).ToList();
            }

            return(partialResults.Select(x => x.ToAnimeComparisonEntryDto()).ToList());
        }
Beispiel #3
0
		public static AnimeComparisonEntryDto ToAnimeComparisonEntryDto(this AnimeComparisonEntry animeComparisonEntryDto)
			=> new AnimeComparisonEntryDto(
				animeComparisonEntryDto.Seiyuu?.ToSeiyuuTableEntry(),
				animeComparisonEntryDto.AnimeCharacters?.Select(x => x.ToAnimeComparisonSubEntryDto()).ToList() ?? new List<AnimeComparisonSubEntryDto>()
			);