package com.lesingle.edu.dto.response;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Builder;
import lombok.Data;

import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 日程计划响应
 * 用于返回日程计划信息给前端
 */
@Data
@Builder
@Schema(description = "日程计划响应")
public class SchedulePlanResponse {

    @Schema(description = "ID")
    private Long id;

    @Schema(description = "租户 ID")
    private Long tenantId;

    @Schema(description = "计划名称")
    private String name;

    @Schema(description = "班级 ID")
    private Long classId;

    @Schema(description = "班级名称")
    private String className;

    @Schema(description = "课程 ID")
    private Long courseId;

    @Schema(description = "课程名称")
    private String courseName;

    @Schema(description = "课程包 ID")
    private Long coursePackageId;

    @Schema(description = "课程包名称")
    private String coursePackageName;

    @Schema(description = "课程类型")
    private String lessonType;

    @Schema(description = "课程类型名称")
    private String lessonTypeName;

    @Schema(description = "教师 ID")
    private Long teacherId;

    @Schema(description = "教师姓名")
    private String teacherName;

    @Schema(description = "排课日期")
    private LocalDate scheduledDate;

    @Schema(description = "时间段 (如：09:00-10:00)")
    private String scheduledTime;

    @Schema(description = "星期几 (1-7)")
    private Integer weekDay;

    @Schema(description = "重复方式 (NONE/WEEKLY)")
    private String repeatType;

    @Schema(description = "重复截止日期")
    private LocalDate repeatEndDate;

    @Schema(description = "来源 (SCHOOL/TEACHER)")
    private String source;

    @Schema(description = "备注")
    private String note;

    @Schema(description = "状态")
    private String status;

    @Schema(description = "创建时间")
    private LocalDateTime createdAt;

    @Schema(description = "更新时间")
    private LocalDateTime updatedAt;
}
