package org.dromara.main.domain.bo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.main.domain.MainTraining;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = MainTraining.class, reverseConvertGenerate = false)
public class MainTrainingBo extends BaseEntity {

    /**
     * 培训ID
     */
    private Long id;

    /**
     * 培训类型: video=视频培训, offline=线下培训, live=直播培训
     */
    private String trainingType;

    /**
     * 培训名称
     */
    private String name;

    /**
     * 培训描述
     */
    private String description;

    /**
     * 封面图ID
     */
    private Long thumbnail;

    /**
     * 岗位类型
     */
    private String jobType;

    /**
     * 岗位等级
     */
    private String jobLevel;

    /**
     * 岗位名称
     */
    private String job;

    /**
     * 排序号
     */
    private Integer sortOrder;

    /**
     * 状态: 0=下架, 1=上架
     */
    private Integer status;

    /**
     * 总时长
     */
    private String duration;

    /**
     * 培训城市
     */
    private String city;

    /**
     * 培训区域
     */
    private String area;

    /**
     * 详细地址
     */
    private String addressDetail;

    /**
     * 培训开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date trainingStartTime;

    /**
     * 培训结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date trainingEndTime;

    /**
     * 报名开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date applyStartTime;

    /**
     * 报名结束时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date applyEndTime;

    /**
     * 主办单位
     */
    private String organizer;

    /**
     * 标签（逗号分隔）
     */
    private String tags;

    /**
     * 备注
     */
    private String remark;

    /**
     * 视频列表（新增/修改时使用）
     */
    private List<TrainingVideoBo> videoList;

    @Data
    public static class TrainingVideoBo {
        private Long id;
        private String name;
        private Long ossId;
        private String fileUrl;
        private String fileSize;
        private String fileType;
        private String duration;
        private Integer sortOrder;
    }
}
