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

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.qmth.themis.business.enums.TaskStatusEnum;
import io.swagger.annotations.ApiModelProperty;

import java.io.Serializable;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Objects;

/**
 * @Description: 考试dto
 * @Param:
 * @return:
 * @Author: wangliang
 * @Date: 2020/8/3
 */
public class TEExamQueryDto implements Serializable {

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

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

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

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

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

    @ApiModelProperty(name = "是否启用，0：停用，1：启用")
    private Integer enable;//是否启用

    @ApiModelProperty(name = "开始时间")
    private Long startTime;//开始时间

    @ApiModelProperty(name = "结束时间")
    private Long endTime;//结束时间

    @ApiModelProperty(name = "算分进度")
    private Double progress;//算分进度

    @ApiModelProperty(name = "算分状态")
    private String scoreStatus;//算分状态

    @ApiModelProperty(name = "更新时间")
    private Long updateTime;//更新时间

    @ApiModelProperty(name = "更新人")
    private String updateName;//更新人

    @ApiModelProperty(name = "监控源")
    private String monitorVideoSource;

    @ApiModelProperty(name = "转录源")
    private String monitorRecord;

    @ApiModelProperty(value = "是否IP段限制，0：不允许，1：允许")
    private Integer enableIpLimit;

    @ApiModelProperty(name = "考场代码")
    private String roomCode;

    @ApiModelProperty(name = "考场名称")
    private String roomName;

    @ApiModelProperty(name = "监考状态，NOT_START：未开始，START：监考中，FINISHED：已结束")
    private String monitorStatus;

    @ApiModelProperty(value = "预警条数")
    private Integer warnCount;

    @ApiModelProperty(value = "是否允许考生发起语音通话，0：否，1：是")
    private Integer examStudentCallEnable = 1;

    @ApiModelProperty(value = "是否推送客观分，false：否，true：是")
    private Boolean objectiveScorePush = false;

    @ApiModelProperty(value = "是否推送违纪考生，false：否，true：是")
    private Boolean examStudentBreachPush = false;

    @ApiModelProperty(value = "云阅卷推送状态")
    private TaskStatusEnum cloudMarkPushDataStatus;

    public TaskStatusEnum getCloudMarkPushDataStatus() {
        return cloudMarkPushDataStatus;
    }

    public void setCloudMarkPushDataStatus(TaskStatusEnum cloudMarkPushDataStatus) {
        this.cloudMarkPushDataStatus = cloudMarkPushDataStatus;
    }

    public Integer getExamStudentCallEnable() {
        return examStudentCallEnable;
    }

    public void setExamStudentCallEnable(Integer examStudentCallEnable) {
        this.examStudentCallEnable = examStudentCallEnable;
    }

    public Boolean getObjectiveScorePush() {
        return objectiveScorePush;
    }

    public void setObjectiveScorePush(Boolean objectiveScorePush) {
        this.objectiveScorePush = objectiveScorePush;
    }

    public Boolean getExamStudentBreachPush() {
        return examStudentBreachPush;
    }

    public void setExamStudentBreachPush(Boolean examStudentBreachPush) {
        this.examStudentBreachPush = examStudentBreachPush;
    }

    public Integer getWarnCount() {
        return warnCount;
    }

    public void setWarnCount(Integer warnCount) {
        this.warnCount = warnCount;
    }

    public String getMonitorRecord() {
        return monitorRecord;
    }

    public void setMonitorRecord(String monitorRecord) {
        this.monitorRecord = monitorRecord;
    }

    public String getMonitorStatus() {
        return monitorStatus;
    }

    public void setMonitorStatus(String monitorStatus) {
        this.monitorStatus = monitorStatus;
    }

    public String getRoomCode() {
        return roomCode;
    }

    public void setRoomCode(String roomCode) {
        this.roomCode = roomCode;
    }

    public String getRoomName() {
        return roomName;
    }

    public void setRoomName(String roomName) {
        this.roomName = roomName;
    }

    public Integer getEnableIpLimit() {
        return enableIpLimit;
    }

    public void setEnableIpLimit(Integer enableIpLimit) {
        this.enableIpLimit = enableIpLimit;
    }

    public String getMonitorVideoSource() {
        return monitorVideoSource;
    }

    public void setMonitorVideoSource(String monitorVideoSource) {
        this.monitorVideoSource = monitorVideoSource;
    }

    public Long getId() {
        return id;
    }

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

    public String getCode() {
        return code;
    }

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

    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 getTag() {
        return tag;
    }

    public void setTag(String tag) {
        this.tag = tag;
    }

    public Integer getEnable() {
        return enable;
    }

    public void setEnable(Integer enable) {
        this.enable = enable;
    }

    public Long getStartTime() {
        return startTime;
    }

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

    public Long getEndTime() {
        return endTime;
    }

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

    public Double getProgress() {
        return progress;
    }

    public void setProgress(Double progress) {
        this.progress = progress;
    }

    public Long getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Long updateTime) {
        this.updateTime = updateTime;
    }

    public String getUpdateName() {
        return updateName;
    }

    public void setUpdateName(String updateName) {
        this.updateName = updateName;
    }

    public String getScoreStatus() {
        return scoreStatus;
    }

    public void setScoreStatus(String scoreStatus) {
        this.scoreStatus = scoreStatus;
    }


}
