package org.dromara.main.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.translation.annotation.Translation;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.main.domain.MainTraining;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Data
@AutoMapper(target = MainTraining.class)
public class MainTrainingVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

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

    /**
     * 培训类型
     */
    private String trainingType;

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

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

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

    /**
     * 封面图URL（自动翻译）
     */
    @Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "thumbnail")
    private String thumbnailUrl;

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

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

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

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

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

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

    /**
     * 上架时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date publishTime;

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

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

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

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

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

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

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

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

    /**
     * 标签
     */
    private String tags;

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

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
     * 学习记录数（视频培训用）
     */
    private Integer learnCount;

    /**
     * 参与人数（线下培训用）
     */
    private Integer participantCount;

    /**
     * 视频列表
     */
    private List<MainTrainingVideoVo> videoList;
}
