import Foundation

enum AlbumSessionHelper {
    static func itemToLesson(album: Album, index: Int) -> (
        title: String,
        mode: StudyMode,
        resourceIds: SessionResources,
        albumId: String,
        albumIndex: Int
    )? {
        let items = album.items
        guard items.indices.contains(index) else { return nil }
        let title = "\(album.title) · \(index + 1)/\(items.count)"
        switch items[index] {
        case .single(let resourceId):
            let kind = album.mediaKind ?? .video
            let mode: StudyMode
            let resourceIds: SessionResources
            switch kind {
            case .audio:
                mode = .singleAudio
                resourceIds = SessionResources(audio: resourceId)
            case .pdf:
                mode = .singlePdf
                resourceIds = SessionResources(pdf: resourceId)
            case .video:
                mode = .singleVideo
                resourceIds = SessionResources(video: resourceId)
            }
            return (title, mode, resourceIds, album.id, index)
        case .combo(let studyMode, let resourceIds):
            return (title, studyMode, resourceIds, album.id, index)
        }
    }

    static func comboItemFromResolved(mode: StudyMode, resourceIds: SessionResources) -> AlbumItem? {
        switch mode {
        case .videoPdf, .pdfAudio, .dualVideo, .dualPdf:
            return .combo(studyMode: mode, resourceIds: resourceIds)
        default:
            return nil
        }
    }
}
