@@ -3,8 +3,12 @@ package club.anifox.backend.service.anime.components.episodes
33import club.anifox.backend.domain.constants.Constants
44import club.anifox.backend.domain.dto.anime.kodik.KodikResponseDto
55import club.anifox.backend.domain.dto.anime.kodik.KodikTranslationsDto
6+ import club.anifox.backend.domain.enums.anime.AnimeStatus
67import club.anifox.backend.domain.mappers.anime.toAnimeTranslation
78import club.anifox.backend.domain.model.anime.translation.AnimeTranslationCount
9+ import club.anifox.backend.domain.model.anime.translation.AnimeTranslationCountDefault
10+ import club.anifox.backend.domain.model.anime.translation.AnimeTranslationCountSingle
11+ import club.anifox.backend.jpa.entity.anime.episodes.AnimeEpisodeTable
812import club.anifox.backend.jpa.entity.anime.episodes.AnimeEpisodeTranslationCountTable
913import club.anifox.backend.jpa.entity.anime.episodes.AnimeTranslationTable
1014import club.anifox.backend.jpa.repository.anime.AnimeTranslationRepository
@@ -37,14 +41,32 @@ class AnimeTranslationsComponent {
3741
3842 val translationsCountEpisodes: Set <AnimeEpisodeTranslationCountTable > = anime.translationsCountEpisodes
3943
40- return translationsCountEpisodes
41- .map { translationEpisodes ->
42- AnimeTranslationCount (
43- translation = translationEpisodes.translation.toAnimeTranslation(),
44- countEpisodes = translationEpisodes.countEpisodes,
45- )
46- }
47- .sortedByDescending { it.countEpisodes }
44+ return if (anime.status == AnimeStatus .Released && anime.episodesCount == 1 ) {
45+ val episodes: Set <AnimeEpisodeTable > = anime.episodes
46+ val episode = episodes.first()
47+ val translationLinks = episode.translations.associate { it.translation.id to it.link }
48+
49+ translationsCountEpisodes
50+ .map { translationEpisodes ->
51+ val translation = translationEpisodes.translation.toAnimeTranslation()
52+ val link = translationLinks[translationEpisodes.translation.id] ? : " "
53+ AnimeTranslationCountSingle (
54+ translation = translation,
55+ countEpisodes = translationEpisodes.countEpisodes,
56+ link = link,
57+ )
58+ }
59+ .sortedByDescending { it.countEpisodes }
60+ } else {
61+ translationsCountEpisodes
62+ .map { translationEpisodes ->
63+ AnimeTranslationCountDefault (
64+ translation = translationEpisodes.translation.toAnimeTranslation(),
65+ countEpisodes = translationEpisodes.countEpisodes,
66+ )
67+ }
68+ .sortedByDescending { it.countEpisodes }
69+ }
4870 }
4971
5072 fun getAnimeTranslations (): List <AnimeTranslationTable > {
0 commit comments