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

import io.swagger.annotations.ApiModelProperty;

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

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

import com.ym.mec.common.enums.BaseEnum;

/**
 * 对应数据库表(music_group_payment_calender):
 */
public class MusicGroupPaymentCalender {

	public enum PaymentCalenderStatusEnum implements BaseEnum<String, PaymentCalenderStatusEnum> {
		AUDITING("审核中"), REJECT("拒绝"), NO("未开启缴费"), OPEN("开启缴费"), OVER("缴费已结束"), PAID("已缴费");

		private String desc;

		PaymentCalenderStatusEnum(String desc) {
			this.desc = desc;
		}

		@Override
		public String getCode() {
			return this.name();
		}

		public String getDesc() {
			return desc;
		}

	}

	public enum PayUserType implements BaseEnum<String, PayUserType> {
		STUDENT("个人"), SCHOOL("学校");

		private String desc;

		PayUserType(String desc) {
			this.desc = desc;
		}

		@Override
		public String getCode() {
			return this.name();
		}

		public String getDesc() {
			return desc;
		}

	}

	public enum PaymentType implements BaseEnum<String, PaymentType> {
		ADD_STUDENT("新增学员"), ADD_COURSE("临时加课"), MUSIC_APPLY("乐团报名"),MUSIC_RENEW("乐团续费"),SPAN_GROUP_CLASS_ADJUST("跨团班级调整");

		private String desc;

		PaymentType(String desc) {
			this.desc = desc;
		}

		@Override
		public String getCode() {
			return this.name();
		}

		public String getDesc() {
			return desc;
		}

	}

	private Long id;

	@ApiModelProperty(value = "乐团编号", required = false)
	private String musicGroupId;
	
	private Integer musicGroupOrganizationCourseSettingId;
	
	private PayUserType payUserType;

	@ApiModelProperty(value = "开始缴费日期", required = false)
	private java.util.Date startPaymentDate;

	@ApiModelProperty(value = "截止缴费日期", required = false)
	private Date deadlinePaymentDate;

	@ApiModelProperty(value = "缴费有效期开始时间", required = false)
	private Date paymentValidStartDate;

	@ApiModelProperty(value = "缴费有效期截止时间", required = false)
	private Date paymentValidEndDate;

	@ApiModelProperty(value = "缴费方式0按月,1按学期，2一次性", required = false)
	private Integer paymentPattern;

	@ApiModelProperty(value = "缴费类型", required = false)
	private PaymentType paymentType;
	
	private BigDecimal paymentAmount = new BigDecimal(0);

	@ApiModelProperty(value = "状态", required = false)
	private PaymentCalenderStatusEnum status;

	private Integer expectNum = 0;

	private Integer actualNum;

	@ApiModelProperty(value = "创建人", required = false)
	private Integer operator;

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

	@ApiModelProperty(value = "审核意见", required = false)
	private String auditMemo;

	private Boolean isGiveMusicNetwork;
	
	private String rejectReason;

	private java.util.Date createTime;

	private java.util.Date updateTime;
	
	private String attribute1;
	
	private String attribute2;

	private String studentIds;

	private List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList = new ArrayList<MusicGroupPaymentCalenderCourseSettings>();

	@ApiModelProperty(value = "批次号", required = false)
	private String batchNo;

	public String getAuditMemo() {
		return auditMemo;
	}

	public void setAuditMemo(String auditMemo) {
		this.auditMemo = auditMemo;
	}

	public Integer getOperator() {
		return operator;
	}

	public void setOperator(Integer operator) {
		this.operator = operator;
	}

	public PaymentType getPaymentType() {
		return paymentType;
	}

	public void setPaymentType(PaymentType paymentType) {
		this.paymentType = paymentType;
	}

	public Integer getPaymentPattern() {
		return paymentPattern;
	}

	public void setPaymentPattern(Integer paymentPattern) {
		this.paymentPattern = paymentPattern;
	}

	public Date getPaymentValidStartDate() {
		return paymentValidStartDate;
	}

	public void setPaymentValidStartDate(Date paymentValidStartDate) {
		this.paymentValidStartDate = paymentValidStartDate;
	}

	public Date getPaymentValidEndDate() {
		return paymentValidEndDate;
	}

	public void setPaymentValidEndDate(Date paymentValidEndDate) {
		this.paymentValidEndDate = paymentValidEndDate;
	}

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

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

	public void setMusicGroupId(String musicGroupId) {
		this.musicGroupId = musicGroupId;
	}

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

	public void setStartPaymentDate(java.util.Date startPaymentDate) {
		this.startPaymentDate = startPaymentDate;
	}

	public java.util.Date getStartPaymentDate() {
		return this.startPaymentDate;
	}

	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 Date getDeadlinePaymentDate() {
		return deadlinePaymentDate;
	}

	public void setDeadlinePaymentDate(Date deadlinePaymentDate) {
		this.deadlinePaymentDate = deadlinePaymentDate;
	}

	public PaymentCalenderStatusEnum getStatus() {
		return status;
	}

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

	public Integer getExpectNum() {
		return expectNum;
	}

	public void setExpectNum(Integer expectNum) {
		this.expectNum = expectNum;
	}

	public Integer getActualNum() {
		return actualNum;
	}

	public void setActualNum(Integer actualNum) {
		this.actualNum = actualNum;
	}

	public String getMemo() {
		return memo;
	}

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

	public Boolean getIsGiveMusicNetwork() {
		return isGiveMusicNetwork;
	}

	public void setIsGiveMusicNetwork(Boolean isGiveMusicNetwork) {
		this.isGiveMusicNetwork = isGiveMusicNetwork;
	}

	public String getRejectReason() {
		return rejectReason;
	}

	public void setRejectReason(String rejectReason) {
		this.rejectReason = rejectReason;
	}

	public Integer getMusicGroupOrganizationCourseSettingId() {
		return musicGroupOrganizationCourseSettingId;
	}

	public void setMusicGroupOrganizationCourseSettingId(Integer musicGroupOrganizationCourseSettingId) {
		this.musicGroupOrganizationCourseSettingId = musicGroupOrganizationCourseSettingId;
	}

	public PayUserType getPayUserType() {
		return payUserType;
	}

	public void setPayUserType(PayUserType payUserType) {
		this.payUserType = payUserType;
	}

	public String getStudentIds() {
		return studentIds;
	}

	public void setStudentIds(String studentIds) {
		this.studentIds = studentIds;
	}

	public List<MusicGroupPaymentCalenderCourseSettings> getMusicGroupPaymentCalenderCourseSettingsList() {
		return musicGroupPaymentCalenderCourseSettingsList;
	}

	public void setMusicGroupPaymentCalenderCourseSettingsList(List<MusicGroupPaymentCalenderCourseSettings> musicGroupPaymentCalenderCourseSettingsList) {
		this.musicGroupPaymentCalenderCourseSettingsList = musicGroupPaymentCalenderCourseSettingsList;
	}

	public String getBatchNo() {
		return batchNo;
	}

	public void setBatchNo(String batchNo) {
		this.batchNo = batchNo;
	}

	public BigDecimal getPaymentAmount() {
		return paymentAmount;
	}

	public void setPaymentAmount(BigDecimal paymentAmount) {
		this.paymentAmount = paymentAmount;
	}

	public String getAttribute1() {
		return attribute1;
	}

	public void setAttribute1(String attribute1) {
		this.attribute1 = attribute1;
	}

	public String getAttribute2() {
		return attribute2;
	}

	public void setAttribute2(String attribute2) {
		this.attribute2 = attribute2;
	}

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

}
