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

import com.ym.mec.biz.dal.enums.GroupType;
import com.ym.mec.biz.dal.enums.StudentAttendanceStatusEnum;

import io.swagger.annotations.ApiModelProperty;

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

import java.util.Date;

/**
 * 对应数据库表(student_attendance):
 */
public class StudentAttendance {

	/**  */
	private Long id;
	
	private GroupType groupType;
	
	/** 乐团 */
	@ApiModelProperty(value = "乐团",required = false)
	private String musicGroupId;
	
	/** 班级 */
	@ApiModelProperty(value = "班级",required = false)
	private Integer classGroupId;
	
	/** 课程计划 */
	@ApiModelProperty(value = "课程计划",required = false)
	private Long courseScheduleId;
	
	private CourseSchedule courseSchedule = new CourseSchedule();

	/** 课程计划 */
	@ApiModelProperty(value = "课程计划",required = false)
	private Long currentScheduleId;
	
	/**  */
	@ApiModelProperty(value = "学生编号",required = false)
	private Integer userId;

	/**  */
	@ApiModelProperty(value = "学生姓名",required = false)
	private String username;

	private String avatar;

	/**  */
	@ApiModelProperty(value = "声部列表",required = false)
	private String subjectName;

	/**  */
	@ApiModelProperty(value = "学生手机号",required = false)
	private String phone;
	
	/** 点名的教师 */
	@ApiModelProperty(value = "点名的教师",required = false)
	private Integer teacherId;
	
	/** 状态（正常、旷课、请假） */
	@ApiModelProperty(value = "状态（正常、旷课、请假、休学）",required = false)
	private StudentAttendanceStatusEnum status;

	private Date signInTime;

	private Date signOutTime;
	/**  */
	private java.util.Date createTime;
	/**  */
	private java.util.Date updateTime;
	
	/** 如果是请假状态，此字段就指请假原因 */
	@ApiModelProperty(value = "如果是请假状态，此字段就指请假原因",required = false)
	private String remark;

	@ApiModelProperty(value = "当前课时")
	private Integer currentClassTimes;

	@ApiModelProperty(value = "缴费状态")
	private String paymentStatus = "PAID_COMPLETED";

	public String getPaymentStatus() {
		return paymentStatus;
	}

	public void setPaymentStatus(String paymentStatus) {
		if(StringUtils.isEmpty(paymentStatus)){
			paymentStatus = "PAID_COMPLETED";
		}
		this.paymentStatus = paymentStatus;
	}

	public Long getCurrentScheduleId() {
		return currentScheduleId;
	}

	public void setCurrentScheduleId(Long currentScheduleId) {
		this.currentScheduleId = currentScheduleId;
	}

	public Date getSignInTime() {
		return signInTime;
	}

	public void setSignInTime(Date signInTime) {
		this.signInTime = signInTime;
	}

	public Date getSignOutTime() {
		return signOutTime;
	}

	public void setSignOutTime(Date signOutTime) {
		this.signOutTime = signOutTime;
	}

	public String getSubjectName() {
		return subjectName;
	}

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

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public Date getUpdateTime() {
		return updateTime;
	}

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

	public Integer getCurrentClassTimes() {
		return currentClassTimes;
	}

	public void setCurrentClassTimes(Integer currentClassTimes) {
		this.currentClassTimes = currentClassTimes;
	}

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

	public String getAvatar() {
		return avatar;
	}

	public void setAvatar(String avatar) {
		this.avatar = avatar;
	}

	public GroupType getGroupType() {
		return groupType;
	}

	public void setGroupType(GroupType groupType) {
		this.groupType = groupType;
	}

	public void setMusicGroupId(String musicGroupId){
		this.musicGroupId = musicGroupId;
	}
	
	public String getMusicGroupId(){
		return this.musicGroupId;
	}
			
	public void setClassGroupId(Integer classGroupId){
		this.classGroupId = classGroupId;
	}
	
	public Integer getClassGroupId(){
		return this.classGroupId;
	}
			
	public void setCourseScheduleId(Long courseScheduleId){
		this.courseScheduleId = courseScheduleId;
	}
	
	public Long getCourseScheduleId(){
		return this.courseScheduleId;
	}
			
	public CourseSchedule getCourseSchedule() {
		return courseSchedule;
	}

	public void setCourseSchedule(CourseSchedule courseSchedule) {
		this.courseSchedule = courseSchedule;
	}

	public void setUserId(Integer userId){
		this.userId = userId;
	}
	
	public Integer getUserId(){
		return this.userId;
	}
			
	public void setTeacherId(Integer teacherId){
		this.teacherId = teacherId;
	}
	
	public Integer getTeacherId(){
		return this.teacherId;
	}

	public StudentAttendanceStatusEnum getStatus() {
		return status;
	}

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

	public void setCreateTime(java.util.Date createTime){
		this.createTime = createTime;
	}
	
	public java.util.Date getCreateTime(){
		return this.createTime;
	}
			
	public void setRemark(String remark){
		this.remark = remark;
	}
	
	public String getRemark(){
		return this.remark;
	}
			
	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}

}
