package jnpf.model.cultivate.resp;

import jnpf.model.cultivate.req.paper.PaperConfigReq;
import jnpf.permission.model.position.PositionGradesInfoBoundVO;
import lombok.Data;

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

/**
 * 用户考试详情 包括用户信息 用户题目信息
 */

@Data
public class UserExamDetailVo extends ExamBaseUser {

//    /**
//     * 用户所属组织、岗位和职等
//     */
//    private List<UserOrganizationVo> userOrganizationList;

    /**
     * 用户所属组织、岗位和职等
     */

    List<PositionGradesInfoBoundVO> userOrganizationList;
    /**
     * 用户考试主键ID
     */
    private String id;

    /**
     * 考试主键ID
     */
    private String examId;
    /**
     * 考试名称
     */
    private String examName;
    /**
     * 考试关联的岗位列表
     */
    private List<PostAndPosition> examRelationPositionList;

    /**
     * 考试类型,0岗位学习考试,1常规考试
     */
    private Integer examType;

    /**
     * 考试限制,0单次考试,1重复测试
     */
    private Integer examlimitation;

    /**
     * 考试时长，单位秒
     */
    private Integer examTime;

    /**
     * 合格分数类型（1固定分，2百分比）
     */
    private Integer passType;

    /**
     * 合格分数
     */
    private Integer passMark;

    /**
     * 优秀分数类型（1固定分，2百分比）
     */
    private Integer excellentType;

    /**
     * 优秀分数
     */
    private Integer excellentMark;

    /**
     * 规则说明
     */
    private String description;


    /**
     * 用户考试用时，单位秒
     */
    private Long duration;


    /**
     * 试卷题目总数
     */
    private Integer questionNumber;
    /**
     * 考试试卷总考分
     */
    private Integer examTotleScore;

    /**
     * 用户考试总得考分
     */
    private Integer score;

    /**
     * 批阅分数
     */
    private Integer readOverScore;


    /**
     * 自动阅卷分数
     */
    private Integer autoScore;
    /**
     * 用户开始考试的时间
     */
    private Date userStartTime;

    /**
     * 完成考试时间
     */
    private Date finishtime;

    /**
     * 考试状态（0待考试，1待批阅，2已逾期，3合格，4不合格，5优秀）
     */
    private Integer status;
    /**
     * 排名，用于百分比合格判断是否通过
     */

    private Integer rank;

    /**
     * 租户id
     */
    private String tenantId;

    /**
     * 开始考试时间
     */
    private Date startTime;
    /**
     * 正确数
     */
    private Integer correctCount;
    /**
     * 试卷名称
     */
    private String paperName;
    /**
     * 试卷ID
     */
    private String paperId;
    /**
     * 考试截止时间
     */
    private Date endTime;

    /**
     * 题型-题目列表
     */
    private Map<String, List<UserQuestionVo>> questionMap;

    /**
     * 考试批次，重复考试
     */
    private String batch;

    /**
     * 试卷题型数量统计
     */
    Map<String, PaperConfigReq.QuestionNum> questionNumMap;

    /**
     * 当前岗位名称
     */
    private String currPostName;

    /**
     * 当前职等名称
     */
    private String currRankName;

    /**
     * 晋升通道
     */
    private List<AppPromotionVO> promotion;

    /**
     * 用户需要考试多少分数才及格
     */
    private Integer needExamPassScore;
    /**
     * 用户需要考试多少分数优秀
     */
    private Integer needExamExcellentScore;

    /**
     * 来源：1、岗位学习课程关联，2、岗位学习 3、常规考试
     */
    private Integer examSource;

    /**
     * 岗位学习ID
     */
    private String relationRankId;

    /**
     * 岗位学习关联考试
     */
    private String relationPositionExamId;
    /**
     * 课程关联考试
     */
    private String relationCourseExamId;

    /**
     * 是否作废，0-正常，1-已经作废
     */
    private Integer isNullify;

    /**
     * 是否需要更新,1-不需要更新  2-需要更新
     */
    private Integer needUpdate = 1;

    /**
     * 岗位ID
     */
    private String relationPositionId;

    public static UserExamDetailVo covert(MyExamListVo c) {
        if (c == null) {
            return null;
        }
        UserExamDetailVo userExamDetailVo = new UserExamDetailVo();
        userExamDetailVo.setId(c.getId());
        userExamDetailVo.setFinishtime(c.getFinishtime());
        userExamDetailVo.setExamSource(c.getExamSource());
        userExamDetailVo.setCurrPostName(c.getCurrPostName());
        userExamDetailVo.setCurrRankName(c.getCurrRankName());
        userExamDetailVo.setExamName(c.getExamName());
        userExamDetailVo.setDuration(c.getDuration());
        userExamDetailVo.setExamTime(c.getExamTime());
        userExamDetailVo.setExamType(c.getExamType());
        userExamDetailVo.setPaperName(c.getPaperName());
        userExamDetailVo.setScore(c.getScore());
        userExamDetailVo.setExamTotleScore(c.getExamTotleScore());
        userExamDetailVo.setStatus(c.getStatus());
        userExamDetailVo.setExamId(c.getExamId());
        return userExamDetailVo;
    }
}
