/**
* Copyright © 2015 Pablo Grela Palleiro (pablogp_9@hotmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.cuacfm.members.model.paymember;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import org.cuacfm.members.model.account.Account;
import org.cuacfm.members.model.feemember.FeeMember;
import org.cuacfm.members.model.util.Constants.methods;
import org.cuacfm.members.model.util.Constants.states;
/** The Class PayMember. */
@Entity
public class PayMember implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private Long id;
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumn(name = "accountId")
private Account account;
@ManyToOne(optional = false, fetch = FetchType.EAGER)
@JoinColumn(name = "feeMemberId")
private FeeMember feeMember;
private Double price;
@Enumerated(EnumType.STRING)
private states state;
@Enumerated(EnumType.STRING)
private methods method;
private int installment;
private int installments;
private String idPayer;
//@Column(unique = true)
// May have been paid with the same directDebit transaction
private String idTxn;
private String emailPayer;
private Date datePay;
private Date dateCharge;
/**
* Instantiates a pay fee member.
*/
public PayMember() {
// Default empty constructor.
}
/**
* Instantiates a new user fee member.
*
* @param account the account
* @param feeMember the fee member
* @param price the price
* @param installment the installment
* @param installments the installments
* @param dateCharge the date charge
*/
public PayMember(Account account, FeeMember feeMember, Double price, int installment, int installments, Date dateCharge) {
super();
this.account = account;
this.feeMember = feeMember;
this.price = price;
this.installment = installment;
this.installments = installments;
this.dateCharge = dateCharge;
this.state = states.NO_PAY;
}
public Account getAccount() {
return account;
}
public FeeMember getFeeMember() {
return feeMember;
}
public Long getId() {
return id;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public states getState() {
return state;
}
public void setState(states state) {
this.state = state;
}
public int getInstallment() {
return installment;
}
public void setInstallment(int installment) {
this.installment = installment;
}
public int getInstallments() {
return installments;
}
public void setInstallments(int installments) {
this.installments = installments;
}
public String getIdPayer() {
return idPayer;
}
public void setIdPayer(String idPayer) {
this.idPayer = idPayer;
}
public String getIdTxn() {
return idTxn;
}
public void setIdTxn(String idTxn) {
this.idTxn = idTxn;
}
public String getEmailPayer() {
return emailPayer;
}
public void setEmailPayer(String emailPayer) {
this.emailPayer = emailPayer;
}
public methods getMethod() {
return method;
}
public void setMethod(methods method) {
this.method = method;
}
public Date getDatePay() {
return datePay;
}
public void setDatePay(Date datePay) {
this.datePay = datePay;
}
public Date getDateCharge() {
return dateCharge;
}
public void setDateCharge(Date dateCharge) {
this.dateCharge = dateCharge;
}
@Override
public String toString() {
return "PayMember [id=" + id + ", account=" + account + ", feeMember=" + feeMember + ", price=" + price + ", state=" + state + ", method="
+ method + ", installment=" + installment + ", installments=" + installments + ", idPayer=" + idPayer + ", idTxn=" + idTxn
+ ", emailPayer=" + emailPayer + ", datePay=" + datePay + ", dateCharge=" + dateCharge + "]";
}
}