package dev.jdtech.jellyfin.models import dev.jdtech.jellyfin.database.ServerDatabaseDao import dev.jdtech.jellyfin.repository.JellyfinRepository import org.jellyfin.sdk.model.api.BaseItemDto import org.jellyfin.sdk.model.api.PlayAccess import java.util.UUID data class FindroidSeason( override val id: UUID, override val name: String, val seriesId: UUID, val seriesName: String, override val originalTitle: String?, override val overview: String, override val sources: List, val indexNumber: Int, val episodes: Collection, override val played: Boolean, override val favorite: Boolean, override val canPlay: Boolean, override val canDownload: Boolean, override val runtimeTicks: Long = 0L, override val playbackPositionTicks: Long = 0L, override val unplayedItemCount: Int?, override val images: FindroidImages, ) : FindroidItem fun BaseItemDto.toFindroidSeason( jellyfinRepository: JellyfinRepository, ): FindroidSeason { return FindroidSeason( id = id, name = name.orEmpty(), originalTitle = originalTitle, overview = overview.orEmpty(), played = userData?.played ?: false, favorite = userData?.isFavorite ?: false, canPlay = playAccess != PlayAccess.NONE, canDownload = canDownload ?: false, unplayedItemCount = userData?.unplayedItemCount, indexNumber = indexNumber ?: 0, sources = emptyList(), episodes = emptyList(), seriesId = seriesId!!, seriesName = seriesName.orEmpty(), images = toFindroidImages(jellyfinRepository), ) } fun FindroidSeasonDto.toFindroidSeason(database: ServerDatabaseDao, userId: UUID): FindroidSeason { val userData = database.getUserDataOrCreateNew(id, userId) return FindroidSeason( id = id, name = name, originalTitle = null, overview = overview, played = userData.played, favorite = userData.favorite, canPlay = true, canDownload = false, unplayedItemCount = null, indexNumber = indexNumber, sources = emptyList(), episodes = emptyList(), seriesId = seriesId, seriesName = seriesName, images = FindroidImages(), ) }