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

import com.ym.mec.auth.api.entity.SysUser;
import com.ym.mec.biz.dal.enums.AuditStatusEnum;

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

/**
 * 对应数据库表(teacher_leave_record):
 */
public class TeacherLeaveRecord {

    /**
     *
     */
    private Long id;

    /**
     *
     */
    private Integer userId;

    /**
     * 请假天数
     */
    private double days;

    /**
     * 请假类型
     */
    private Integer leaveCategoryId;

    /**
     * 请假类型名称
     */
    private String leaveCategoryName;

    /**
     * 请假状态（审批中、拒绝、通过）
     */
    private AuditStatusEnum status;

    /**
     * 备注
     */
    private String remark;

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

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

    /**
     * 请假开始时间
     */
    private java.util.Date startTime;

    /**
     * 请假结束时间
     */
    private java.util.Date endTime;

    /**
     * 课程调整
     */
    private String coursesScheduleJson;

    /**
     * 流程定义
     */
    private String wfProcessId;

    /**
     * 流程实例
     */
    private String wfOrderId;
    
    private SysUser user = new SysUser();

    public String getLeaveCategoryName() {
        return leaveCategoryName;
    }

    public void setLeaveCategoryName(String leaveCategoryName) {
        this.leaveCategoryName = leaveCategoryName;
    }

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

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

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public Integer getUserId() {
        return this.userId;
    }

    public void setDays(double days) {
        this.days = days;
    }

    public double getDays() {
        return this.days;
    }

    public Integer getLeaveCategoryId() {
        return leaveCategoryId;
    }

    public void setLeaveCategoryId(Integer leaveCategoryId) {
        this.leaveCategoryId = leaveCategoryId;
    }

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

    public AuditStatusEnum getStatus() {
        return this.status;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getRemark() {
        return this.remark;
    }

    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 void setStartTime(java.util.Date startTime) {
        this.startTime = startTime;
    }

    public java.util.Date getStartTime() {
        return this.startTime;
    }

    public void setEndTime(java.util.Date endTime) {
        this.endTime = endTime;
    }

    public java.util.Date getEndTime() {
        return this.endTime;
    }

    public void setCoursesScheduleJson(String coursesScheduleJson) {
        this.coursesScheduleJson = coursesScheduleJson;
    }

    public String getCoursesScheduleJson() {
        return this.coursesScheduleJson;
    }

    public void setWfProcessId(String wfProcessId) {
        this.wfProcessId = wfProcessId;
    }

    public String getWfProcessId() {
        return this.wfProcessId;
    }

    public void setWfOrderId(String wfOrderId) {
        this.wfOrderId = wfOrderId;
    }

    public String getWfOrderId() {
        return this.wfOrderId;
    }

    public SysUser getUser() {
		return user;
	}

	public void setUser(SysUser user) {
		this.user = user;
	}

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


    public static class CoursesScheduleHistory {

        private CourseSchedule before;

        private CourseSchedule after;

        public CourseSchedule getBefore() {
            return before;
        }

        public void setBefore(CourseSchedule before) {
            this.before = before;
        }

        public CourseSchedule getAfter() {
            return after;
        }

        public void setAfter(CourseSchedule after) {
            this.after = after;
        }
    }
}
