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

import io.swagger.annotations.ApiModelProperty;

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

import com.fasterxml.jackson.annotation.JsonInclude;
import com.ym.mec.biz.dal.enums.CourseStatusEnum;
import com.ym.mec.biz.dal.enums.TeachModeEnum;
import com.ym.mec.common.enums.BaseEnum;

import java.math.BigDecimal;

/**
 * 对应数据库表(course_schedule):
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CourseSchedule {

	public enum CourseScheduleType implements BaseEnum<String, CourseScheduleType> {

		SINGLE("SINGLE", "单技课"), MIX("MIX", "合奏课"), HIGH("HIGH", "小班课"), VIP("VIP", "vip课"), DEMO("demo", "试听课"), COMPREHENSIVE("comprehensive", "综合课"), PRACTICE(
				"PRACTICE", "练习课"), ENLIGHTENMENT("ENLIGHTENMENT", "启蒙课"), TRAINING("TRAINING", "集训课");

		private String code;

		private String msg;

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

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

		public String getMsg() {
			return msg;
		}
	}

	/**  */
	private Long id;

	/** 班级编号 */
	@ApiModelProperty(value = "班级编号", required = false)
	private Integer classGroupId;

	/** 课程状态 */
	@ApiModelProperty(value = "课程状态", required = false)
	private CourseStatusEnum status;

	/** 补贴 */
	@ApiModelProperty(value = "补贴", required = false)
	private BigDecimal subsidy;

	/** 上课日期 */
	@ApiModelProperty(value = "上课日期", required = false)
	private java.util.Date classDate;

	/** 上课时间 */
	@ApiModelProperty(value = "上课时间", required = false)
	private java.util.Date startClassTime;

	/** 结束时间 */
	@ApiModelProperty(value = "结束时间", required = false)
	private java.util.Date endClassTime;

	/** 上课教师 */
	@ApiModelProperty(value = "上课教师", required = false)
	private Long teacherId;

	/** 实际上课教师 */
	@ApiModelProperty(value = "实际上课教师", required = false)
	private Long actualTeacherId;

	/**  */
	private java.util.Date createTime;

	/**  */
	private java.util.Date updateTime;

	private TeachModeEnum teachMode;

	private CourseScheduleType type;
	
	private String name;

	@ApiModelProperty(value = "实际上课人数")
	private Integer studentNum;

	@ApiModelProperty(value = "请假人数")
	private Integer leaveStudentNum;

	public Integer getStudentNum() {
		return studentNum;
	}

	public void setStudentNum(Integer studentNum) {
		this.studentNum = studentNum;
	}

	public Integer getLeaveStudentNum() {
		return leaveStudentNum;
	}

	public void setLeaveStudentNum(Integer leaveStudentNum) {
		this.leaveStudentNum = leaveStudentNum;
	}

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

	public Long getId() {
		return this.id;
	}

	public void setClassGroupId(Integer classGroupId) {
		this.classGroupId = classGroupId;
	}

	public Integer getClassGroupId() {
		return this.classGroupId;
	}

	public CourseStatusEnum getStatus() {
		return status;
	}

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

	public void setSubsidy(BigDecimal subsidy) {
		this.subsidy = subsidy;
	}

	public BigDecimal getSubsidy() {
		return this.subsidy;
	}

	public void setClassDate(java.util.Date classDate) {
		this.classDate = classDate;
	}

	public java.util.Date getClassDate() {
		return this.classDate;
	}

	public void setStartClassTime(java.util.Date startClassTime) {
		this.startClassTime = startClassTime;
	}

	public java.util.Date getStartClassTime() {
		return this.startClassTime;
	}

	public void setEndClassTime(java.util.Date endClassTime) {
		this.endClassTime = endClassTime;
	}

	public java.util.Date getEndClassTime() {
		return this.endClassTime;
	}

	public Long getTeacherId() {
		return teacherId;
	}

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

	public Long getActualTeacherId() {
		return actualTeacherId;
	}

	public void setActualTeacherId(Long actualTeacherId) {
		this.actualTeacherId = actualTeacherId;
	}

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

	public java.util.Date getCreateTime() {
		return this.createTime;
	}

	public void setUpdateTime(java.util.Date updateTime) {
		this.updateTime = updateTime;
	}

	public java.util.Date getUpdateTime() {
		return this.updateTime;
	}

	public TeachModeEnum getTeachMode() {
		return teachMode;
	}

	public void setTeachMode(TeachModeEnum teachMode) {
		this.teachMode = teachMode;
	}

	public CourseScheduleType getType() {
		return type;
	}

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

	public String getName() {
		return name;
	}

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

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

}
