package domain

import "time"

type SubCourseLevel string

const (
	SubCourseLevelBeginner     SubCourseLevel = "BEGINNER"
	SubCourseLevelIntermediate SubCourseLevel = "INTERMEDIATE"
	SubCourseLevelAdvanced     SubCourseLevel = "ADVANCED"
)

type ContentStatus string

const (
	ContentStatusDraft     ContentStatus = "DRAFT"
	ContentStatusPublished ContentStatus = "PUBLISHED"
	ContentStatusInactive  ContentStatus = "INACTIVE"
	ContentStatusArchived  ContentStatus = "ARCHIVED"
)

type TreeSubCourse struct {
	ID    int64
	Title string
	Level string
}

type TreeCourse struct {
	ID         int64
	Title      string
	SubCourses []TreeSubCourse
}

type CourseCategory struct {
	ID        int64
	Name      string
	IsActive  bool
	CreatedAt time.Time
}

type Course struct {
	ID          int64
	CategoryID  int64
	Title       string
	Description *string
	Thumbnail   *string
	IsActive    bool
}

type SubCourse struct {
	ID           int64
	CourseID     int64
	Title        string
	Description  *string
	Thumbnail    *string
	DisplayOrder int32
	Level        string
	IsActive     bool
}

type SubCourseVideo struct {
	ID           int64
	SubCourseID  int64
	Title        string
	Description  *string
	VideoURL     string
	Duration     int32
	Resolution   *string
	InstructorID *string
	Thumbnail    *string
	Visibility   *string
	DisplayOrder int32
	IsPublished  bool
	PublishDate  *time.Time
	Status       string
	// Vimeo-specific fields
	VimeoID         *string
	VimeoEmbedURL   *string
	VimeoPlayerHTML *string
	VimeoStatus     *string
}

type VideoHostProvider string

const (
	VideoHostProviderDirect VideoHostProvider = "DIRECT"
	VideoHostProviderVimeo  VideoHostProvider = "VIMEO"
)
