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

import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.builder.ToStringBuilder;

import com.ym.mec.auth.api.entity.SysUser;
import com.ym.mec.biz.dal.enums.JobNatureEnum;
import com.ym.mec.biz.dal.enums.JobTypeEnum;
import com.ym.mec.biz.dal.enums.ProbationPeriodEnum;

/**
 * 对应数据库表(teacher):
 */
public class Teacher extends SysUser {

	/** 职务类型（指导老师、教务老师、教学主管） */
	@ApiModelProperty(value = "职务类型（指导老师 ADVISER、教务老师 ACADEMIC、教学主管 TEACHING）", required = false)
	private JobTypeEnum jobType;

	/** 工作性质（兼职、全职） */
	@ApiModelProperty(value = "工作性质（兼职 PART_JOB、全职FULL_JOB）", required = false)
	private JobNatureEnum jobNature;

	/** 是否试用期 */
	@ApiModelProperty(value = "是否试用期1是，0否", required = false)
	private ProbationPeriodEnum isProbationPeriod;

	/** 学历 */
	@ApiModelProperty(value = "学历", required = false)
	private String educationBackground;

	/** 毕业学校 */
	@ApiModelProperty(value = "毕业学校", required = false)
	private String graduateSchool;

	/** 技术职称 */
	@ApiModelProperty(value = "技术职称", required = false)
	private String technicalTitles;

	/** 所属分部名称 */
	@ApiModelProperty(value = "所属分部名称", required = false)
	private String organName;

	/** 所属分部名称 */
	@ApiModelProperty(value = "教师所属分部编号", required = false)
	private Integer teacherOrganId;

	/** 工作单位 */
	@ApiModelProperty(value = "工作单位", required = false)
	private String workUnit;

	/** 专业技能（支持多个，用|分隔），对应科目表编号 */
	@ApiModelProperty(value = "专业技能（支持多个，用逗号分隔），对应科目表编号", required = false)
	private String subjectId;

	/** 专业技能（支持多个，用|分隔），对应科目表编号 */
	private List<String> subjectName;

	/** 专业技能（支持多个，用|分隔），对应科目表编号 */
	private String splitSubjectName;

	/** 入职时间 */
	@ApiModelProperty(value = "入职时间", required = false)
	private java.util.Date entryDate;

	/** 证件类型 */
	@ApiModelProperty(value = "证件类型", required = false)
	private String certificateType;

	/** 证件号码 */
	@ApiModelProperty(value = "证件号码", required = false)
	private String certificateNum;

	/** 流动范围(多个用|分开) */
	@ApiModelProperty(value = "流动范围(多个用逗号分开)", required = false)
	private String flowOrganRange;

	/** 流动范围(多个用|分开) */
	@ApiModelProperty(value = "流动范围编号", required = false)
	private String flowOrganRangeId;

	@ApiModelProperty(value = "老师介绍", required = false)
	private String introduction;

	@ApiModelProperty(value = "VIP课数量", required = false)
	private Integer vipNum;

	@ApiModelProperty(value = "试听课数量", required = false)
	private Integer demoNum;
	
	@ApiModelProperty(value = "离职时间", required = false)
	private Date demissionDate;
	
	@ApiModelProperty(value = "转正时间", required = false)
	private Date formalStaffDate;
	
	@ApiModelProperty(value = "是否支持课程奖励规则活动", required = false)
	private Boolean isSupportCourseScheduleRewardsRules;
	
	@ApiModelProperty(value = "是否支持额外的网管课", required = false)
	private Boolean isSupportExtraPracticeLesson;
	
	@ApiModelProperty(value = "身份证正面照", required = false)
	private String idcardFrontImg;
	
	@ApiModelProperty(value = "身份证反面照", required = false)
	private String idcardBackImg;
	
	@ApiModelProperty(value = "手持身份证照", required = false)
	private String idcardHandImg;

	private List<School> teacherSchools;

	private Integer lectureNum;
	
	private String memo;

	private BigDecimal operatingIndex;
	private BigDecimal serviceIndex;

	public BigDecimal getOperatingIndex() {
		return operatingIndex;
	}

	public void setOperatingIndex(BigDecimal operatingIndex) {
		this.operatingIndex = operatingIndex;
	}

	public BigDecimal getServiceIndex() {
		return serviceIndex;
	}

	public void setServiceIndex(BigDecimal serviceIndex) {
		this.serviceIndex = serviceIndex;
	}

	public Integer getLectureNum() {
		return lectureNum;
	}

	public void setLectureNum(Integer lectureNum) {
		this.lectureNum = lectureNum;
	}

	public Integer getTeacherOrganId() {
		return teacherOrganId;
	}

	public void setTeacherOrganId(Integer teacherOrganId) {
		this.teacherOrganId = teacherOrganId;
	}

	public String getSplitSubjectName() {
		return splitSubjectName;
	}

	public void setSplitSubjectName(String splitSubjectName) {
		this.splitSubjectName = splitSubjectName;
	}

	public String getFlowOrganRangeId() {
		return flowOrganRangeId;
	}

	public void setFlowOrganRangeId(String flowOrganRangeId) {
		this.flowOrganRangeId = flowOrganRangeId;
	}

	public List<School> getTeacherSchools() {
		return teacherSchools;
	}

	public void setTeacherSchools(List<School> teacherSchools) {
		this.teacherSchools = teacherSchools;
	}

	public Integer getDemoNum() {
		return demoNum;
	}

	public void setDemoNum(Integer demoNum) {
		this.demoNum = demoNum;
	}

	public Integer getVipNum() {
		return vipNum;
	}

	public void setVipNum(Integer vipNum) {
		this.vipNum = vipNum;
	}

	public List<String> getSubjectName() {
		return subjectName;
	}

	public void setSubjectName(List<String> subjectName) {
		this.subjectName = subjectName;
	}

	public String getOrganName() {
		return organName;
	}

	public void setOrganName(String organName) {
		this.organName = organName;
	}

	public JobTypeEnum getJobType() {
		return jobType;
	}

	public void setJobType(JobTypeEnum jobType) {
		this.jobType = jobType;
	}

	public ProbationPeriodEnum getIsProbationPeriod() {
		return isProbationPeriod;
	}

	public void setIsProbationPeriod(ProbationPeriodEnum isProbationPeriod) {
		this.isProbationPeriod = isProbationPeriod;
	}

	public JobNatureEnum getJobNature() {
		return jobNature;
	}

	public void setJobNature(JobNatureEnum jobNature) {
		this.jobNature = jobNature;
	}

	public void setEducationBackground(String educationBackground) {
		this.educationBackground = educationBackground;
	}

	public String getEducationBackground() {
		return this.educationBackground;
	}

	public void setGraduateSchool(String graduateSchool) {
		this.graduateSchool = graduateSchool;
	}

	public String getGraduateSchool() {
		return this.graduateSchool;
	}

	public void setTechnicalTitles(String technicalTitles) {
		this.technicalTitles = technicalTitles;
	}

	public String getTechnicalTitles() {
		return this.technicalTitles;
	}

	public void setWorkUnit(String workUnit) {
		this.workUnit = workUnit;
	}

	public String getWorkUnit() {
		return this.workUnit;
	}

	public void setSubjectId(String subjectId) {
		this.subjectId = subjectId;
	}

	public String getSubjectId() {
		return this.subjectId;
	}

	public void setEntryDate(java.util.Date entryDate) {
		this.entryDate = entryDate;
	}

	public java.util.Date getEntryDate() {
		return this.entryDate;
	}

	public void setCertificateType(String certificateType) {
		this.certificateType = certificateType;
	}

	public String getCertificateType() {
		return this.certificateType;
	}

	public void setCertificateNum(String certificateNum) {
		this.certificateNum = certificateNum;
	}

	public String getCertificateNum() {
		return this.certificateNum;
	}

	public void setFlowOrganRange(String flowOrganRange) {
		this.flowOrganRange = flowOrganRange;
	}

	public String getFlowOrganRange() {
		return this.flowOrganRange;
	}

	public String getIntroduction() {
		return introduction;
	}

	public void setIntroduction(String introduction) {
		this.introduction = introduction;
	}

	public Date getDemissionDate() {
		return demissionDate;
	}

	public void setDemissionDate(Date demissionDate) {
		this.demissionDate = demissionDate;
	}

	public Date getFormalStaffDate() {
		return formalStaffDate;
	}

	public void setFormalStaffDate(Date formalStaffDate) {
		this.formalStaffDate = formalStaffDate;
	}

	public Boolean getIsSupportCourseScheduleRewardsRules() {
		return isSupportCourseScheduleRewardsRules;
	}

	public void setIsSupportCourseScheduleRewardsRules(Boolean isSupportCourseScheduleRewardsRules) {
		this.isSupportCourseScheduleRewardsRules = isSupportCourseScheduleRewardsRules;
	}

	public Boolean getIsSupportExtraPracticeLesson() {
		return isSupportExtraPracticeLesson;
	}

	public void setIsSupportExtraPracticeLesson(Boolean isSupportExtraPracticeLesson) {
		this.isSupportExtraPracticeLesson = isSupportExtraPracticeLesson;
	}

	public String getIdcardFrontImg() {
		return idcardFrontImg;
	}

	public void setIdcardFrontImg(String idcardFrontImg) {
		this.idcardFrontImg = idcardFrontImg;
	}

	public String getIdcardBackImg() {
		return idcardBackImg;
	}

	public void setIdcardBackImg(String idcardBackImg) {
		this.idcardBackImg = idcardBackImg;
	}

	public String getIdcardHandImg() {
		return idcardHandImg;
	}

	public void setIdcardHandImg(String idcardHandImg) {
		this.idcardHandImg = idcardHandImg;
	}

	public String getMemo() {
		return memo;
	}

	public void setMemo(String memo) {
		this.memo = memo;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}

}
