package kr.co.vividnext.sodalive.explorer.profile

import androidx.annotation.Keep
import com.google.gson.annotations.SerializedName
import kr.co.vividnext.sodalive.audio_content.series.GetSeriesListResponse
import kr.co.vividnext.sodalive.explorer.profile.creator_community.GetCommunityPostListResponse

@Keep
data class GetCreatorProfileResponse(
    @SerializedName("creator")
    val creator: CreatorResponse,
    @SerializedName("userDonationRanking")
    val userDonationRanking: List<UserDonationRankingResponse>,
    @SerializedName("liveRoomList")
    val liveRoomList: List<LiveRoomResponse>,
    @SerializedName("contentList")
    val contentList: List<GetAudioContentListItem>,
    @SerializedName("notice")
    val notice: String,
    @SerializedName("communityPostList")
    val communityPostList: List<GetCommunityPostListResponse>,
    @SerializedName("cheers")
    val cheers: GetCheersResponse,
    @SerializedName("activitySummary")
    val activitySummary: GetCreatorActivitySummary,
    @SerializedName("seriesList")
    val seriesList: List<GetSeriesListResponse.SeriesListItem>,
    @SerializedName("isBlock")
    val isBlock: Boolean
)

@Keep
data class CreatorResponse(
    @SerializedName("creatorId") val creatorId: Long,
    @SerializedName("profileUrl") val profileUrl: String,
    @SerializedName("nickname") val nickname: String,
    @SerializedName("tags") val tags: List<String>,
    @SerializedName("introduce") val introduce: String = "",
    @SerializedName("instagramUrl") val instagramUrl: String? = null,
    @SerializedName("youtubeUrl") val youtubeUrl: String? = null,
    @SerializedName("websiteUrl") val websiteUrl: String? = null,
    @SerializedName("blogUrl") val blogUrl: String? = null,
    @SerializedName("isAvailableChat") val isAvailableChat: Boolean = true,
    @SerializedName("isFollow") val isFollow: Boolean,
    @SerializedName("isNotify") val isNotify: Boolean,
    @SerializedName("isNotification") val isNotification: Boolean,
    @SerializedName("notificationRecipientCount") val notificationRecipientCount: Int
)

@Keep
data class UserDonationRankingResponse(
    @SerializedName("userId") val userId: Long,
    @SerializedName("nickname") val nickname: String,
    @SerializedName("profileImage") val profileImage: String,
    @SerializedName("donationCan") val donationCan: Int
)

@Keep
data class LiveRoomResponse(
    @SerializedName("roomId") val roomId: Long,
    @SerializedName("title") val title: String,
    @SerializedName("content") val content: String,
    @SerializedName("isPaid") val isPaid: Boolean,
    @SerializedName("beginDateTime") val beginDateTime: String,
    @SerializedName("coverImageUrl") val coverImageUrl: String,
    @SerializedName("isAdult") val isAdult: Boolean,
    @SerializedName("price") val price: Int,
    @SerializedName("channelName") val channelName: String?,
    @SerializedName("managerNickname") val managerNickname: String,
    @SerializedName("isReservation") val isReservation: Boolean,
    @SerializedName("isActive") val isActive: Boolean,
    @SerializedName("isPrivateRoom") val isPrivateRoom: Boolean
)

@Keep
data class GetAudioContentListResponse(
    @SerializedName("totalCount") val totalCount: Int,
    @SerializedName("items") val items: List<GetAudioContentListItem>
)

@Keep
data class GetAudioContentListItem(
    @SerializedName("contentId") val contentId: Long,
    @SerializedName("coverImageUrl") val coverImageUrl: String,
    @SerializedName("title") val title: String,
    @SerializedName("price") val price: Int,
    @SerializedName("themeStr") val themeStr: String,
    @SerializedName("duration") val duration: String?,
    @SerializedName("likeCount") val likeCount: Int,
    @SerializedName("commentCount") val commentCount: Int,
    @SerializedName("isPin") val isPin: Boolean,
    @SerializedName("isAdult") val isAdult: Boolean,
    @SerializedName("isScheduledToOpen") val isScheduledToOpen: Boolean,
    @SerializedName("isRented") val isRented: Boolean,
    @SerializedName("isOwned") val isOwned: Boolean,
    @SerializedName("isSoldOut") val isSoldOut: Boolean
)

@Keep
data class GetCreatorActivitySummary(
    @SerializedName("liveCount") val liveCount: Int,
    @SerializedName("liveTime") val liveTime: Int,
    @SerializedName("liveContributorCount") val liveContributorCount: Int,
    @SerializedName("contentCount") val contentCount: Int
)


