package com.ym.mec.biz.dal.entity;

import com.ym.mec.common.enums.BaseEnum;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.PastOrPresent;
import javax.validation.constraints.Positive;
import java.util.Date;

public class StudentVisit {

    public enum VisiterTypeEnum implements BaseEnum<String, com.ym.mec.biz.dal.enums.TeachModeEnum> {
        TEACHER("TEACHER", "指导老师"), EDU_TEACHER("EDU_TEACHER", "教务老师");

        private String code;

        private String msg;

        VisiterTypeEnum(String code, String msg) {
            this.code = code;
            this.msg = msg;
        }

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

        public String getMsg() {
            return msg;
        }

        public void setMsg(String msg) {
            this.msg = msg;
        }

        @Override
        public String getCode() {
            return this.code;
        }
    }

    private Integer id;

    /**
     * 乐团id
     */
    @ApiModelProperty(value = "乐团id", required = true)
    private String musicGroupId;

    /**
     * 分部id
     */
    @ApiModelProperty(value = "分部id", required = false)
    private Integer organId;

    /**
     * 学生id
     */
    @ApiModelProperty(value = "学生id", required = true)
    @Positive(message = "学生id必须大于0")
    private Integer studentId;

    /**
     * 老师id
     */
    @ApiModelProperty(value = "老师id", required = true)
    @Positive(message = "老师id必须大于0")
    private Integer teacherId;

    /**
     * 老师类型
     */
    @ApiModelProperty(value = "老师类型", required = false)
    private VisiterTypeEnum visiterType;

    /**
     * 回访类型
     */
    @ApiModelProperty(value = "回访类型", required = true)
    @NotBlank(message = "回访类型不能为空")
    private String type;

    /**
     * 回访目的
     */
    @ApiModelProperty(value = "回访目的", required = true)
    private String purpose;

    /**
     * 学生情况
     */
    @ApiModelProperty(value = "学生近况", required = true)
    private String overview;

    /**
     * 家长反馈
     */
    @ApiModelProperty(value = "家长反馈", required = true)
    private String feedback;

    /**
     * 回访日期
     */
    @ApiModelProperty(value = "回访日期", required = true)
    @PastOrPresent(message = "回访日期不能大于当天")
    private Date visitTime;

    /**
     * 添加时间
     */
    private Date createTime;

    public Integer getId() {
        return id;
    }

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

    public String getMusicGroupId() {
        return musicGroupId;
    }

    public Integer getOrganId() {
        return organId;
    }

    public void setOrganId(Integer organId) {
        this.organId = organId;
    }

    public void setMusicGroupId(String musicGroupId) {
        this.musicGroupId = musicGroupId;
    }

    public Integer getStudentId() {
        return studentId;
    }

    public void setStudentId(Integer studentId) {
        this.studentId = studentId;
    }

    public Integer getTeacherId() {
        return teacherId;
    }

    public void setTeacherId(Integer teacherId) {
        this.teacherId = teacherId;
    }

    public VisiterTypeEnum getVisiterType() {
        return visiterType;
    }

    public void setVisiterType(VisiterTypeEnum visiterType) {
        this.visiterType = visiterType;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getPurpose() {
        return purpose;
    }

    public void setPurpose(String purpose) {
        this.purpose = purpose;
    }

    public String getOverview() {
        return overview;
    }

    public void setOverview(String overview) {
        this.overview = overview;
    }

    public String getFeedback() {
        return feedback;
    }

    public void setFeedback(String feedback) {
        this.feedback = feedback;
    }

    public Date getVisitTime() {
        return visitTime;
    }

    public void setVisitTime(Date visitTime) {
        this.visitTime = visitTime;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
}