package jnpf.model.cultivate.dto.course;

import cn.hutool.core.util.StrUtil;
import jnpf.model.cultivate.po.course.FtbCultivateCourse;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.Objects;

/**
 * 课程表传输对象
 *
 * @author fantaibao
 * @date 2023/12/17
 */
@Data
public class FtbCultivateCourseDTO extends FtbCultivateCourseSettingDTO {
    /**
     * 课程名称
     */
    @NotBlank(message = "课程名称不能为空")
    @Length(max = 50, message = "课程名称不能超过50字")
    private String name;

    /**
     * 课程格式（1视频，2音频，3图文,4通用格式）
     */
    @NotNull(message = "课程格式不能为空")
    private Integer format;

    /**
     * 副标题
     */
    private String subtitle;

    /**
     * 课程亮点
     */
    @Length(max = 200, message = "课程亮点不能超过200字")
    private String highLights;

    /**
     * 课程类型表id.可自定义
     */
    @NotBlank(message = "课程类型不能为空")
    private String typeId;

    /**
     * 课程标签（1全局课程，2岗位学习课程）
     */
    @NotNull(message = "课程标签不能为空")
    private Integer label;

    /**
     * 学习岗位，多选，逗号分割
     */
    private String learnJob;

    /**
     * 课程内容更新需要重新学习（1是，2否）
     */
    private Integer courseUpdate;

    /**
     * 同步添加至对应岗位学习课程列表0否1是
     */
    private Integer coursePositionSync;


    public FtbCultivateCourse convertFtbCultivateCourse(FtbCultivateCourseDTO ftbCultivateCourseDTO) {
        if (ftbCultivateCourseDTO == null) {
            return null;
        }
        // 校验岗位学习课程时，学习岗位不能为空
        if (label == 2 && StrUtil.isBlank(learnJob)) {
            throw new RuntimeException("请选择学习岗位");
        }
        FtbCultivateCourse ftbCultivateCourse = new FtbCultivateCourse();
        ftbCultivateCourse.setName(ftbCultivateCourseDTO.getName());
        ftbCultivateCourse.setFormat(ftbCultivateCourseDTO.getFormat());
        if(StringUtils.isNotEmpty(ftbCultivateCourseDTO.getSubtitle())) {
            ftbCultivateCourse.setSubtitle(ftbCultivateCourseDTO.getSubtitle());
        }else{
            ftbCultivateCourse.setSubtitle("");
        }
        ftbCultivateCourse.setHighLights(ftbCultivateCourseDTO.getHighLights());
        ftbCultivateCourse.setTypeId(ftbCultivateCourseDTO.getTypeId());
        ftbCultivateCourse.setLabel(ftbCultivateCourseDTO.getLabel());
        ftbCultivateCourse.setLearnJob(ftbCultivateCourseDTO.getLearnJob());
        // 默认课程内容更新不需要重新学习
        ftbCultivateCourse.setCourseUpdate(ftbCultivateCourseDTO.getCourseUpdate());
        if (Objects.isNull(ftbCultivateCourseDTO.getCourseUpdate())) {
            ftbCultivateCourseDTO.setCourseUpdate(2);
        }
        // 默认课程状态为上架
        ftbCultivateCourse.setIsGroundIng(0);
        ftbCultivateCourse.setCoursePositionSync(ftbCultivateCourseDTO.getCoursePositionSync());
        return ftbCultivateCourse;
    }

    @Data
    public static class PositionLearnCourseInternal {
        /**
         * 岗位id
         */
        private String postId;
        /**
         * 岗位学习id
         */
        private String postLearnId;

    }

}
