package com.zd.exam.domain;

import com.zd.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotNull;
import java.util.Date;
import java.util.List;

/**
 * 考试(ElExam)实体类
 *
 * @author liubo
 * @since 2021-08-31 09:09:15
 */
@ApiModel(value = "考试管理", description = "考试管理")
public class ElExam extends BaseEntity {
    private static final long serialVersionUID = -22310109719488486L;
    /**
     * ID
     */
    private Long id;
    /**
     * 关联证书id
     */
    @ApiModelProperty(value = "关联证书id")
    private Long certId;
    /**
     * 学科类别 = 题库类别
     */
    @ApiModelProperty(value = "学科类别")
    private Integer code;
    /**
     * 考试名称
     */
    @ApiModelProperty(value = "考试名称")
    private String title;
    /**
     * 考试描述
     */
    @ApiModelProperty(value = "考试描述")
    private String content;
    /**
     * 1公开2部门3定员
     */
    @ApiModelProperty(value = "1公开2部门3定员")
    private Integer openType = 2;
    /**
     * 组题方式1题库,2指定
     */
    @ApiModelProperty(value = "组题方式1题库,2指定")
    private Integer joinType;
    /**
     * 难度:1中等,2较难,3难
     */
    @ApiModelProperty(value = "难度:1中等,2较难,3难")
    private Integer level;
    /**
     * 适用范围(1. 安全准入考试，2. 负面清单考试，3. 黑名单考试，4.模拟考试)
     */
    @ApiModelProperty(value = "适用范围(1. 安全准入考试，2. 负面清单考试，3. 黑名单考试，4.模拟考试)")
    private Integer scopeType;
    /**
     * 考试状态 1 正常 0 下架
     */
    @ApiModelProperty(value = "考试状态 1 正常 0 下架")
    private Integer state;
    /**
     * 积分换算值（1 积分=多少试卷分数）
     */
    @ApiModelProperty(value = "积分换算值（1 积分=多少试卷分数）")
    private Double conversion;
    /**
     * 是否限时
     */
    @ApiModelProperty(value = "是否限时")
    private Integer timeLimit;

    /**
     * 考前是否人脸验证 0 否，1 是
     */
    @ApiModelProperty(value = "考前是否人脸验证 0 否，1 是")
    private Integer preFaceVerify;

    /**
     * 考后是否人脸验证 0 否，1 是
     */
    @ApiModelProperty(value = "考后是否人脸验证 0 否，1 是")
    private Integer endFaceVerify;

    /**
     * 开始时间
     */
    @ApiModelProperty(value = "开始时间")
    private Date startTime;
    /**
     * 结束时间
     */
    @ApiModelProperty(value = "结束时间")
    private Date endTime;
    /**
     * 总分数
     */
    @ApiModelProperty(value = "总分数")
    private Integer totalScore;
    /**
     * 总时长（分钟）
     */
    @ApiModelProperty(value = "总时长（分钟）")
    @NotNull(message = "考试时长不能为空！")
    private Integer totalTime;
    /**
     * 及格分数
     */
    @ApiModelProperty(value = "及格分数")
    private Integer qualifyScore;
    /**
     * 关联培训id
     */
    @ApiModelProperty(value = "关联培训id")
    @Deprecated // 2.1 需求删除
    private Long safeTrainId;

    /**
     * 分类ID多个以逗号分隔
     */
    @ApiModelProperty(value = "分类ID多个以逗号分隔")
    private String classifyIds;
    @ApiModelProperty(value = "分类名称 多个以逗号分隔")
    private String classifyNames;

    /**
     * 资源ID多个以逗号分隔
     */
    @ApiModelProperty(value = "资源ID多个以逗号分隔")
    private String courseIds;

    @ApiModelProperty(value = "题库列表")
    private List<ElExamRepo> repoList;

    @ApiModelProperty(value = "考试部门列表")
    private List<Long> deptIds;

    @ApiModelProperty(value = "考试证书列表")
    private List<ElExamCertRelation> examCerts;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Integer getOpenType() {
        return openType;
    }

    public void setOpenType(Integer openType) {
        this.openType = openType;
    }

    public Integer getJoinType() {
        return joinType;
    }

    public void setJoinType(Integer joinType) {
        this.joinType = joinType;
    }

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }

    public Integer getScopeType() {
        return scopeType;
    }

    public void setScopeType(Integer scopeType) {
        this.scopeType = scopeType;
    }

    public Integer getState() {
        return state;
    }

    public void setState(Integer state) {
        this.state = state;
    }

    public Integer getTimeLimit() {
        return timeLimit;
    }

    public void setTimeLimit(Integer timeLimit) {
        this.timeLimit = timeLimit;
    }

    public Date getStartTime() {
        return startTime;
    }

    public void setStartTime(Date startTime) {
        this.startTime = startTime;
    }

    public Date getEndTime() {
        return endTime;
    }

    public void setEndTime(Date endTime) {
        this.endTime = endTime;
    }

    public Integer getTotalScore() {
        return totalScore;
    }

    public void setTotalScore(Integer totalScore) {
        this.totalScore = totalScore;
    }

    public Integer getTotalTime() {
        return totalTime;
    }

    public void setTotalTime(Integer totalTime) {
        this.totalTime = totalTime;
    }

    public Integer getQualifyScore() {
        return qualifyScore;
    }

    public void setQualifyScore(Integer qualifyScore) {
        this.qualifyScore = qualifyScore;
    }

    public List<ElExamRepo> getRepoList() {
        return repoList;
    }

    public void setRepoList(List<ElExamRepo> repoList) {
        this.repoList = repoList;
    }

    public List<Long> getDeptIds() {
        return deptIds;
    }

    public void setDeptIds(List<Long> deptIds) {
        this.deptIds = deptIds;
    }

    public Double getConversion() {
        return conversion;
    }

    public void setConversion(Double conversion) {
        this.conversion = conversion;
    }

    public Long getCertId() {
        return certId;
    }

    public void setCertId(Long certId) {
        this.certId = certId;
    }

    public List<ElExamCertRelation> getExamCerts() {
        return examCerts;
    }

    public void setExamCerts(List<ElExamCertRelation> examCerts) {
        this.examCerts = examCerts;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getClassifyIds() {
        return classifyIds;
    }

    public void setClassifyIds(String classifyIds) {
        this.classifyIds = classifyIds;
    }

    public String getCourseIds() {
        return courseIds;
    }

    public void setCourseIds(String courseIds) {
        this.courseIds = courseIds;
    }

    public Integer getPreFaceVerify() {
        return preFaceVerify;
    }

    public void setPreFaceVerify(Integer preFaceVerify) {
        this.preFaceVerify = preFaceVerify;
    }

    public Integer getEndFaceVerify() {
        return endFaceVerify;
    }

    public void setEndFaceVerify(Integer endFaceVerify) {
        this.endFaceVerify = endFaceVerify;
    }

    public String getClassifyNames() {
        return classifyNames;
    }

    public void setClassifyNames(String classifyNames) {
        this.classifyNames = classifyNames;
    }
}
