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

import com.ym.mec.biz.dal.entity.CooperationOrgan.OwnershipType;
import com.ym.mec.biz.dal.enums.KitPurchaseMethodEnum;
import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
import com.ym.mec.biz.dal.enums.YesOrNoEnum;
import io.swagger.annotations.ApiModelProperty;
import org.apache.commons.lang3.builder.ToStringBuilder;

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

/**
 * 对应数据库表(student_registration):
 */
public class StudentRegistration {

    @ApiModelProperty(value = "报名id", required = false)
    private Long id;

    @ApiModelProperty(value = "机构id", required = false)
    private Integer organId;

    @ApiModelProperty(value = "学生编号", required = false)
    private Integer userId;

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

    @ApiModelProperty(value = "性别（0，女  1，男", required = false)
    private Integer gender;

    @ApiModelProperty(value = "身份证号", required = false)
    private String idCardNo;

    @ApiModelProperty(value = "证件类型")
    private String certificateType;

    @ApiModelProperty(value = "所属乐团（对应 music_group 表id）", required = false)
    private String musicGroupId;

    @ApiModelProperty(value = "当前所在年级", required = false)
    private String currentGrade;

    @ApiModelProperty(value = "年级年份", required = false)
    private Date currentGradeDate;

    @ApiModelProperty(value = "当前所在班级", required = false)
    private String currentClass;

    @ApiModelProperty(value = "报名科目", required = false)
    private Integer subjectId;

    @ApiModelProperty(value = "实际科目", required = false)
    private Integer actualSubjectId;

    @ApiModelProperty(value = "实际科目名称", required = false)
    private String subjectName;

    @ApiModelProperty(value = "是否允许调剂", required = false)
    private YesOrNoEnum isAllowAdjust;

    @ApiModelProperty(value = "器材购买方式（GROUP:团购,OWNED:自备）", required = false)
    private KitPurchaseMethodEnum kitPurchaseMethod;

    @ApiModelProperty(value = "备注", required = false)
    private String remark;

    @ApiModelProperty(value = "添加时间", required = false)
    private Date createTime;

    @ApiModelProperty(value = "更新时间", required = false)
    private Date updateTime;

    @ApiModelProperty(value = "家长姓名", required = false)
    private String parentsName;

    @ApiModelProperty(value = "家长电话", required = false)
    private String parentsPhone;

    @ApiModelProperty(value = "家长单位", required = false)
    private String parentsCompany;

    @ApiModelProperty(value = "生日", required = false)
    private Date birthdate;

    @ApiModelProperty(value = "缴费状态（1-已缴费 0-未交费）", required = false)
    private PaymentStatusEnum paymentStatus;

    @ApiModelProperty(value = "用户所在乐团状态）",required = false)
    private StudentMusicGroupStatusEnum musicGroupStatus;

    @ApiModelProperty(value = "班级id", required = true)
    private Integer classGroupId;

    @ApiModelProperty(value = "班级名称", required = true)
    private String classGroupName;

    @ApiModelProperty(value = "临时课程费用", required = true)
    private BigDecimal temporaryCourseFee;

    @ApiModelProperty(value = "余额", required = true)
    private BigDecimal balance;

    @ApiModelProperty(value = "是否是插班生0不是，1是", required = true)
    private int transferStudent;

    private BigDecimal surplusCourseFee;

    private String organName;

    private String schoolName;

    private String kitType;

    private BigDecimal depositFee;

    //乐团
    private OwnershipType ownershipType;
    
    private Integer chargeTypeId;

    public String getCertificateType() {
        return certificateType;
    }

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

    public BigDecimal getBalance() {
        return balance;
    }

    public void setBalance(BigDecimal balance) {
        this.balance = balance;
    }

    public int getTransferStudent() {
        return transferStudent;
    }

    public void setTransferStudent(int transferStudent) {
        this.transferStudent = transferStudent;
    }

    public StudentMusicGroupStatusEnum getMusicGroupStatus() {
        return musicGroupStatus;
    }


    public Date getBirthdate() {
        return birthdate;
    }

    public void setBirthdate(Date birthdate) {
        this.birthdate = birthdate;
    }

    public void setMusicGroupStatus(StudentMusicGroupStatusEnum musicGroupStatus) {
        this.musicGroupStatus = musicGroupStatus;
    }

    public Integer getActualSubjectId() {
        return actualSubjectId;
    }

    public void setActualSubjectId(Integer actualSubjectId) {
        this.actualSubjectId = actualSubjectId;
    }

    public String getParentsPhone() {
        return parentsPhone;
    }

    public void setParentsPhone(String parentsPhone) {
        this.parentsPhone = parentsPhone;
    }

    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 setMusicGroupId(String musicGroupId) {
        this.musicGroupId = musicGroupId;
    }

    public String getMusicGroupId() {
        return this.musicGroupId;
    }

    public void setCurrentGrade(String currentGrade) {
        this.currentGrade = currentGrade;
    }

    public String getCurrentGrade() {
        return this.currentGrade;
    }

    public void setCurrentClass(String currentClass) {
        this.currentClass = currentClass;
    }

    public String getCurrentClass() {
        return this.currentClass;
    }

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

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

    public YesOrNoEnum getIsAllowAdjust() {
        return isAllowAdjust;
    }

    public void setIsAllowAdjust(YesOrNoEnum isAllowAdjust) {
        this.isAllowAdjust = isAllowAdjust;
    }

    public void setPaymentStatus(PaymentStatusEnum paymentStatus) {
        this.paymentStatus = paymentStatus;
    }

    public KitPurchaseMethodEnum getKitPurchaseMethod() {
        return kitPurchaseMethod;
    }

    public void setKitPurchaseMethod(KitPurchaseMethodEnum kitPurchaseMethod) {
        this.kitPurchaseMethod = kitPurchaseMethod;
    }

    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 setParentsName(String parentsName) {
        this.parentsName = parentsName;
    }

    public String getParentsName() {
        return this.parentsName;
    }

    public void setParentsCompany(String parentsCompany) {
        this.parentsCompany = parentsCompany;
    }

    public String getParentsCompany() {
        return this.parentsCompany;
    }

    public PaymentStatusEnum getPaymentStatus() {
        return paymentStatus;
    }

    public Integer getClassGroupId() {
        return classGroupId;
    }

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

    public String getName() {
        return name;
    }

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

    public String getIdCardNo() {
        return idCardNo;
    }

    public void setIdCardNo(String idCardNo) {
        this.idCardNo = idCardNo;
    }

    public Integer getGender() {
        return gender;
    }

    public void setGender(Integer gender) {
        this.gender = gender;
    }


    public Integer getOrganId() {
        return organId;
    }

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

    public String getSubjectName() {
        return subjectName;
    }

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

    public String getClassGroupName() {
        return classGroupName;
    }

    public void setClassGroupName(String classGroupName) {
        this.classGroupName = classGroupName;
    }

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

    public BigDecimal getTemporaryCourseFee() {
        return temporaryCourseFee;
    }

    public void setTemporaryCourseFee(BigDecimal temporaryCourseFee) {
        this.temporaryCourseFee = temporaryCourseFee;
    }

    public String getOrganName() {
        return organName;
    }

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

    public String getSchoolName() {
        return schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }

    public String getKitType() {
        return kitType;
    }

    public void setKitType(String kitType) {
        this.kitType = kitType;
    }

    public BigDecimal getDepositFee() {
        return depositFee;
    }

    public void setDepositFee(BigDecimal depositFee) {
        this.depositFee = depositFee;
    }

    public OwnershipType getOwnershipType() {
        return ownershipType;
    }

    public void setOwnershipType(OwnershipType ownershipType) {
        this.ownershipType = ownershipType;
    }

	public Integer getChargeTypeId() {
		return chargeTypeId;
	}

	public void setChargeTypeId(Integer chargeTypeId) {
		this.chargeTypeId = chargeTypeId;
	}

    public BigDecimal getSurplusCourseFee() {
        return surplusCourseFee;
    }

    public void setSurplusCourseFee(BigDecimal surplusCourseFee) {
        this.surplusCourseFee = surplusCourseFee;
    }

    public Date getCurrentGradeDate() {
        return currentGradeDate;
    }

    public void setCurrentGradeDate(Date currentGradeDate) {
        this.currentGradeDate = currentGradeDate;
    }
}
