package com.qmth.themis.business.bean.admin;

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

import java.io.Serializable;
import java.util.List;

/**
 * @Description: 实时监控台明细
 * @Param:
 * @return:
 * @Author: wangliang
 * @Date: 2020/8/22
 */
@ApiModel("实时监控台明细返回对象")
public class InvigilateListDetailBean implements Serializable {

    @ApiModelProperty(name = "考试批次名称")
    private String examName;

    @ApiModelProperty(name = "场次code")
    private String examActivityCode;

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

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

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

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

    @ApiModelProperty(name = "证件号")
    private String identity;

    @ApiModelProperty(name = "考生姓名")
    private String examStudentName;

    @ApiModelProperty(name = "科目名称(编码)")
    private String courseNameCode;

    @ApiModelProperty(name = "考生状态")
    private String status;

    @ApiModelProperty(name = "考生状态值")
    private ExamRecordStatusEnum statusCode;

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

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

    @ApiModelProperty(name = "系统预警")
    private Integer warningCount = 0;

    @ApiModelProperty(name = "陌生人脸")
    private Integer multipleFaceCount = 0;

    @ApiModelProperty(name = "异常处理")
    private Integer exceptionCount = 0;

    @ApiModelProperty(name = "是否违纪，0：是，1：不是")
    private Integer breachStatus;

    @ApiModelProperty(value = "考生底照地址")
    private String basePhotoPath;

    @ApiModelProperty(name = "考生轨迹")
    private List<TEExamStudentLog> examStudentLogList;

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

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

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

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

    @ApiModelProperty(name = "场次结束时间")
    private Long examActivityEndTime;

    @ApiModelProperty(name = "监考老师")
    private String invigilateUsers;

    @ApiModelProperty(name = "班级")
    private String classNo;

    public String getClassNo() {
        return classNo;
    }

    public void setClassNo(String classNo) {
        this.classNo = classNo;
    }

    public Long getExamActivityStartTime() {
        return examActivityStartTime;
    }

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

    public Long getExamActivityEndTime() {
        return examActivityEndTime;
    }

    public void setExamActivityEndTime(Long examActivityEndTime) {
        this.examActivityEndTime = examActivityEndTime;
    }

    public String getInvigilateUsers() {
        return invigilateUsers;
    }

    public void setInvigilateUsers(String invigilateUsers) {
        this.invigilateUsers = invigilateUsers;
    }

    public Integer getExamStudentCallEnable() {
        return examStudentCallEnable;
    }

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

    public String getMonitorVideoSource() {
        return monitorVideoSource;
    }

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

    public String getBasePhotoPath() {
        return basePhotoPath;
    }

    public void setBasePhotoPath(String basePhotoPath) {
        this.basePhotoPath = basePhotoPath;
    }

    public List<TEExamStudentLog> getExamStudentLogList() {
        return examStudentLogList;
    }

    public void setExamStudentLogList(List<TEExamStudentLog> examStudentLogList) {
        this.examStudentLogList = examStudentLogList;
    }

    public InvigilateListDetailBean(String examName, String examActivityCode, Long examId, Long examActivityId,
                                    Long examStudentId, Long examRecordId, String identity, String examStudentName,
                                    String courseNameCode, ExamRecordStatusEnum statusCode, String roomCode, String roomName,
                                    Integer breachStatus, String basePhotoPath, Long examActivityStartTime,
                                    Long examActivityEndTime, String invigilateUsers, String classNo) {
        this.examName = examName;
        this.examActivityCode = examActivityCode;
        this.examId = examId;
        this.examActivityId = examActivityId;
        this.examStudentId = examStudentId;
        this.examRecordId = examRecordId;
        this.identity = identity;
        this.examStudentName = examStudentName;
        this.courseNameCode = courseNameCode;
        this.statusCode = statusCode;
        this.roomCode = roomCode;
        this.roomName = roomName;
        this.breachStatus = breachStatus;
        this.basePhotoPath = basePhotoPath;
        this.examActivityStartTime = examActivityStartTime;
        this.examActivityEndTime = examActivityEndTime;
        this.invigilateUsers = invigilateUsers;
        this.classNo = classNo;
    }

    public String getMonitorRecord() {
        return monitorRecord;
    }

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

    public String getExamName() {
        return examName;
    }

    public void setExamName(String examName) {
        this.examName = examName;
    }

    public String getExamActivityCode() {
        return examActivityCode;
    }

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

    public String getRoomName() {
        return roomName;
    }

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

    public Integer getBreachStatus() {
        return breachStatus;
    }

    public void setBreachStatus(Integer breachStatus) {
        this.breachStatus = breachStatus;
    }

    public Integer getWarningCount() {
        return warningCount;
    }

    public void setWarningCount(Integer warningCount) {
        this.warningCount = warningCount;
    }

    public Integer getMultipleFaceCount() {
        return multipleFaceCount;
    }

    public void setMultipleFaceCount(Integer multipleFaceCount) {
        this.multipleFaceCount = multipleFaceCount;
    }

    public Integer getExceptionCount() {
        return exceptionCount;
    }

    public void setExceptionCount(Integer exceptionCount) {
        this.exceptionCount = exceptionCount;
    }

    public String getRoomCode() {
        return roomCode;
    }

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

    public Long getExamId() {
        return examId;
    }

    public void setExamId(Long examId) {
        this.examId = examId;
    }

    public Long getExamActivityId() {
        return examActivityId;
    }

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

    public Long getExamStudentId() {
        return examStudentId;
    }

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

    public Long getExamRecordId() {
        return examRecordId;
    }

    public void setExamRecordId(Long examRecordId) {
        this.examRecordId = examRecordId;
    }

    public String getIdentity() {
        return identity;
    }

    public void setIdentity(String identity) {
        this.identity = identity;
    }

    public String getExamStudentName() {
        return examStudentName;
    }

    public void setExamStudentName(String examStudentName) {
        this.examStudentName = examStudentName;
    }

    public String getCourseNameCode() {
        return courseNameCode;
    }

    public void setCourseNameCode(String courseNameCode) {
        this.courseNameCode = courseNameCode;
    }

    public String getStatus() {
        if (statusCode != null) {
            return statusCode.getCode();
        }
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public ExamRecordStatusEnum getStatusCode() {
        return statusCode;
    }

    public void setStatusCode(ExamRecordStatusEnum statusCode) {
        this.statusCode = statusCode;
    }
}
