package com.qmth.themis.business.dto.response;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import io.swagger.annotations.ApiModelProperty;

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

/**
 * @Description: 未完成的考试记录
 * @Param:
 * @return:
 * @Author: wangliang
 * @Date: 2020/8/3
 */
public class TEExamUnFinishDto implements Serializable {

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(name = "考试id")
    private Long id;//考试id

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(name = "考试场次id")
    private Long examActivityId;//考试场次id

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(name = "考试记录id")
    private Long recordId;//考试记录id

    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(name = "考生id")
    private Long examStudentId;//考生id

    @ApiModelProperty(name = "考试名称")
    private String name;//考试名称

    @ApiModelProperty(name = "模式，together：集中统一，anytime：随到随考")
    private String mode;//考试模式

    @ApiModelProperty(name = "考前须知")
    private String preNotice;//考前须知

    @ApiModelProperty(name = "考试须知阅读时长")
    private Integer preNoticeStaySeconds;//考试须知阅读时长(秒)

    @ApiModelProperty(name = "考后说明")
    private String postNotice;//考后说明，针对一个场次进行设置

    @ApiModelProperty(name = "考试代码")
    private String examCode;//考试代码

    @ApiModelProperty(name = "考试场次代码")
    private String examActivityCode;//考试场次代码

    @ApiModelProperty(name = "考试开始时间")
    private Long examStartTime;//考试开始时间

    @ApiModelProperty(name = "考试结束时间")
    private Long examEndTime;//考试结束时间

    @ApiModelProperty(name = "考场开始时间")
    private Long examActivityStartTime;//考场开始时间

    @ApiModelProperty(name = "考场结束时间")
    private Long examActivityFinishTime;//考场结束时间

    @ApiModelProperty(name = "科目代码")
    private String courseCode;//科目代码

    @ApiModelProperty(name = "科目名称")
    private String courseName;//科目名称

    @ApiModelProperty(name = "提前多长时间开始候考")
    private Long prepareSeconds;//提前多长时间开始候考(分钟)

    @ApiModelProperty(name = "最短考试时长")
    private Long minDurationSeconds;//最短考试时长，相当于考试冻结时间(分钟)

    @ApiModelProperty(name = "最大考试时长")
    private Long maxDurationSeconds;//最大考试时长

    @ApiModelProperty(name = "允许考试次数")
    private Integer examCount;//允许考试次数

    @ApiModelProperty(name = "是否在结束时间集中强制收卷，0：不强制，1：强制")
    private Integer fouceFinish;//是否在结束时间集中强制收卷，0：不强制，1：强制

    @ApiModelProperty(name = "开考身份验证策略，off：关闭，face_verify_optional：非强制人脸验证，face_verify_force：强制人脸验证，liveness_verify：活体验证")
    private String entryAuthenticationPolicy;//开考身份验证策略，off：关闭，face_verify_optional：非强制人脸验证，face_verify_force：强制人脸验证，liveness：活体验证

    @ApiModelProperty(name = "考试过程中人脸检测是否开启，0：不开启，1：开启")
    private Integer inProcessFaceVerify;//考试过程中人脸检测是否开启，0：不开启，1：开启

    @ApiModelProperty(name = "考试过程中人脸检测是否忽略陌生人 ，0：不忽略，1：忽略")
    private Integer inProcessFaceStrangerIgnore;//考试过程中人脸检测是否忽略陌生人 ，0：不忽略，1：忽略

    @ApiModelProperty(name = "考试过程中是否启用活体检测 ，0：不启用，1：启用")
    private Integer inProcessLivenessVerify;//考试过程中是否启用活体检测 ，0：不启用，1：启用

    @ApiModelProperty(value = "考试过程中是否启用真实性检测，0：不启用，1：启用")
    private Integer inProcessRealnessVerify;

    @ApiModelProperty(name = "考试过程中活体检测间隔时间")
    private String inProcessLivenessFixedRange;//考试过程中活体检测间隔时间

    @ApiModelProperty(name = "考试过程中活体检测结果判定规则，any：任意一次通过，all：全部都要通过，more：通过次数大于失败次数")
    private String inProcessLivenessJudgePolicy;//考试过程中活体检测结果判定规则，any：任意一次通过，all：全部都要通过，more：通过次数大于失败次数

    @ApiModelProperty(name = "是否允许使用摄像头拍照答题，0：不允许，1：允许")
    private Integer cameraPhotoUpload;//是否允许使用摄像头拍照答题，0：不允许，1：允许

    @ApiModelProperty(name = "断点失效时间")
    private Integer breakExpireSeconds;//断点失效时间(秒)

    @ApiModelProperty(name = "断点续考次数")
    private Integer breakResumeCount;//断点续考次数

    @ApiModelProperty(name = "累计考试用时")
    private Integer durationSeconds;//累计考试用时

    @ApiModelProperty(name = "客户端最近同步时间")
    private Long clientLastSyncTime;//客户端最近同步时间

    @ApiModelProperty(name = "是否允许使用移动端拍照答题，0：不开启，1：开启")
    private Integer mobilePhotoUpload;//是否允许使用移动端拍照答题，0：不开启，1：开启

    public Integer getInProcessRealnessVerify() {
        return inProcessRealnessVerify;
    }

    public void setInProcessRealnessVerify(Integer inProcessRealnessVerify) {
        this.inProcessRealnessVerify = inProcessRealnessVerify;
    }

    public Integer getMobilePhotoUpload() {
        return mobilePhotoUpload;
    }

    public void setMobilePhotoUpload(Integer mobilePhotoUpload) {
        this.mobilePhotoUpload = mobilePhotoUpload;
    }

    public Integer getDurationSeconds() {
        return durationSeconds;
    }

    public void setDurationSeconds(Integer durationSeconds) {
        this.durationSeconds = durationSeconds;
    }

    public Integer getBreakExpireSeconds() {
        return breakExpireSeconds;
    }

    public void setBreakExpireSeconds(Integer breakExpireSeconds) {
        this.breakExpireSeconds = breakExpireSeconds;
    }

    public Integer getBreakResumeCount() {
        return breakResumeCount;
    }

    public void setBreakResumeCount(Integer breakResumeCount) {
        this.breakResumeCount = breakResumeCount;
    }

    public Long getId() {
        return id;
    }

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

    public Long getExamActivityId() {
        return examActivityId;
    }

    public void setExamActivityId(Long examActivityId) {
        this.examActivityId = examActivityId;
    }

    public Long getRecordId() {
        return recordId;
    }

    public void setRecordId(Long recordId) {
        this.recordId = recordId;
    }

    public Long getExamStudentId() {
        return examStudentId;
    }

    public void setExamStudentId(Long examStudentId) {
        this.examStudentId = examStudentId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMode() {
        return mode;
    }

    public void setMode(String mode) {
        this.mode = mode;
    }

    public String getPreNotice() {
        return preNotice;
    }

    public void setPreNotice(String preNotice) {
        this.preNotice = preNotice;
    }

    public Integer getPreNoticeStaySeconds() {
        return preNoticeStaySeconds;
    }

    public void setPreNoticeStaySeconds(Integer preNoticeStaySeconds) {
        this.preNoticeStaySeconds = preNoticeStaySeconds;
    }

    public String getPostNotice() {
        return postNotice;
    }

    public void setPostNotice(String postNotice) {
        this.postNotice = postNotice;
    }

    public String getExamCode() {
        return examCode;
    }

    public void setExamCode(String examCode) {
        this.examCode = examCode;
    }

    public String getExamActivityCode() {
        return examActivityCode;
    }

    public void setExamActivityCode(String examActivityCode) {
        this.examActivityCode = examActivityCode;
    }

    public Long getExamStartTime() {
        return examStartTime;
    }

    public void setExamStartTime(Long examStartTime) {
        this.examStartTime = examStartTime;
    }

    public Long getExamEndTime() {
        return examEndTime;
    }

    public void setExamEndTime(Long examEndTime) {
        this.examEndTime = examEndTime;
    }

    public Long getExamActivityStartTime() {
        return examActivityStartTime;
    }

    public void setExamActivityStartTime(Long examActivityStartTime) {
        this.examActivityStartTime = examActivityStartTime;
    }

    public Long getExamActivityFinishTime() {
        return examActivityFinishTime;
    }

    public void setExamActivityFinishTime(Long examActivityFinishTime) {
        this.examActivityFinishTime = examActivityFinishTime;
    }

    public Long getClientLastSyncTime() {
        return clientLastSyncTime;
    }

    public void setClientLastSyncTime(Long clientLastSyncTime) {
        this.clientLastSyncTime = clientLastSyncTime;
    }

    public String getCourseCode() {
        return courseCode;
    }

    public void setCourseCode(String courseCode) {
        this.courseCode = courseCode;
    }

    public String getCourseName() {
        return courseName;
    }

    public void setCourseName(String courseName) {
        this.courseName = courseName;
    }

    public Long getPrepareSeconds() {
        return prepareSeconds;
    }

    public void setPrepareSeconds(Long prepareSeconds) {
        this.prepareSeconds = prepareSeconds;
    }

    public Long getMinDurationSeconds() {
        return minDurationSeconds;
    }

    public void setMinDurationSeconds(Long minDurationSeconds) {
        this.minDurationSeconds = minDurationSeconds;
    }

    public Long getMaxDurationSeconds() {
        return maxDurationSeconds;
    }

    public void setMaxDurationSeconds(Long maxDurationSeconds) {
        this.maxDurationSeconds = maxDurationSeconds;
    }

    public Integer getExamCount() {
        return examCount;
    }

    public void setExamCount(Integer examCount) {
        this.examCount = examCount;
    }

    public Integer getFouceFinish() {
        return fouceFinish;
    }

    public void setFouceFinish(Integer fouceFinish) {
        this.fouceFinish = fouceFinish;
    }

    public String getEntryAuthenticationPolicy() {
        return entryAuthenticationPolicy;
    }

    public void setEntryAuthenticationPolicy(String entryAuthenticationPolicy) {
        this.entryAuthenticationPolicy = entryAuthenticationPolicy;
    }

    public Integer getInProcessFaceVerify() {
        return inProcessFaceVerify;
    }

    public void setInProcessFaceVerify(Integer inProcessFaceVerify) {
        this.inProcessFaceVerify = inProcessFaceVerify;
    }

    public Integer getInProcessFaceStrangerIgnore() {
        return inProcessFaceStrangerIgnore;
    }

    public void setInProcessFaceStrangerIgnore(Integer inProcessFaceStrangerIgnore) {
        this.inProcessFaceStrangerIgnore = inProcessFaceStrangerIgnore;
    }

    public Integer getInProcessLivenessVerify() {
        return inProcessLivenessVerify;
    }

    public void setInProcessLivenessVerify(Integer inProcessLivenessVerify) {
        this.inProcessLivenessVerify = inProcessLivenessVerify;
    }

    public String getInProcessLivenessFixedRange() {
        return inProcessLivenessFixedRange;
    }

    public void setInProcessLivenessFixedRange(String inProcessLivenessFixedRange) {
        this.inProcessLivenessFixedRange = inProcessLivenessFixedRange;
    }

    public String getInProcessLivenessJudgePolicy() {
        return inProcessLivenessJudgePolicy;
    }

    public void setInProcessLivenessJudgePolicy(String inProcessLivenessJudgePolicy) {
        this.inProcessLivenessJudgePolicy = inProcessLivenessJudgePolicy;
    }

    public Integer getCameraPhotoUpload() {
        return cameraPhotoUpload;
    }

    public void setCameraPhotoUpload(Integer cameraPhotoUpload) {
        this.cameraPhotoUpload = cameraPhotoUpload;
    }
}
