package com.reading.platform.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

import java.util.List;

@Data
@Schema(description = "Course Create Request")
public class CourseCreateRequest {

    @NotBlank(message = "Course name is required")
    @Schema(description = "Course name")
    private String name;

    @Schema(description = "Course code")
    private String code;

    @Schema(description = "Description")
    private String description;

    @Schema(description = "Cover URL")
    private String coverUrl;

    @Schema(description = "Cover image path")
    private String coverImagePath;

    @Schema(description = "Category")
    private String category;

    @Schema(description = "Age range")
    private String ageRange;

    @Schema(description = "Difficulty level")
    private String difficultyLevel;

    @Schema(description = "Duration in minutes")
    private Integer durationMinutes;

    @Schema(description = "Objectives")
    private String objectives;

    // ============================================
    // Course Package Refactoring Fields
    // ============================================

    @Schema(description = "Core content")
    private String coreContent;

    // Course introduction (8 fields)
    @Schema(description = "Course summary")
    private String introSummary;

    @Schema(description = "Course highlights")
    private String introHighlights;

    @Schema(description = "Course goals")
    private String introGoals;

    @Schema(description = "Content schedule")
    private String introSchedule;

    @Schema(description = "Key points and difficulties")
    private String introKeyPoints;

    @Schema(description = "Teaching methods")
    private String introMethods;

    @Schema(description = "Evaluation methods")
    private String introEvaluation;

    @Schema(description = "Notes and precautions")
    private String introNotes;

    // Schedule reference data
    @Schema(description = "Schedule reference data (JSON)")
    private String scheduleRefData;

    // Environment construction (Step 7)
    @Schema(description = "Environment construction content")
    private String environmentConstruction;

    // Theme and picture book
    @Schema(description = "Theme ID")
    private Long themeId;

    @Schema(description = "Picture book name")
    private String pictureBookName;

    // Digital resources
    @Schema(description = "Ebook paths (JSON array)")
    private String ebookPaths;

    @Schema(description = "Audio paths (JSON array)")
    private String audioPaths;

    @Schema(description = "Video paths (JSON array)")
    private String videoPaths;

    @Schema(description = "Other resources (JSON array)")
    private String otherResources;

    // Teaching materials
    @Schema(description = "PPT file path")
    private String pptPath;

    @Schema(description = "PPT file name")
    private String pptName;

    @Schema(description = "Poster paths (JSON array)")
    private String posterPaths;

    @Schema(description = "Teaching tools (JSON array)")
    private String tools;

    @Schema(description = "Student materials")
    private String studentMaterials;

    // Lesson plan, activities, assessment
    @Schema(description = "Lesson plan data (JSON)")
    private String lessonPlanData;

    @Schema(description = "Activities data (JSON)")
    private String activitiesData;

    @Schema(description = "Assessment data (JSON)")
    private String assessmentData;

    // Tags
    @Schema(description = "Grade tags (JSON array)")
    private String gradeTags;

    @Schema(description = "Domain tags (JSON array)")
    private String domainTags;

    // Collective lesson
    @Schema(description = "Has collective lesson")
    private Boolean hasCollectiveLesson;

}
