package org.dicadeveloper.weplantaforest.admin.receipt;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import org.dicadeveloper.weplantaforest.admin.cart.Cart;
import org.dicadeveloper.weplantaforest.admin.user.User;
@Entity
public class Receipt {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long _receiptId;
@Column(unique = true)
private String _invoiceNumber;
@OneToMany(fetch = FetchType.LAZY)
@JoinColumn(name = "_receipt__receiptId")
private List<Cart> _carts = new ArrayList<Cart>();
@Column
private final Long _createdOn;
@Column
private Long _sentOn;
@Column
private Long _ownerId;
public Receipt() {
_createdOn = System.currentTimeMillis();
}
public void setInvoiceNumber(final String invoiceNumber) {
_invoiceNumber = invoiceNumber;
}
public String getInvoiceNumber() {
return _invoiceNumber;
}
public String getMaskedInvoiceNumber() {
return _invoiceNumber.replace("/", "_");
}
public static String demaskInvoiceNumber(final String invoiceNumber) {
return invoiceNumber.replace("_", "/");
}
public void setCarts(final List<Cart> carts) {
_carts = carts;
}
public void addCart(final Cart cart) {
if (!_carts.contains(cart)) {
_carts.add(cart);
}
}
public void removeCart(final Cart cart) {
_carts.remove(cart);
}
public void clearCarts() {
_carts.clear();
}
public List<Cart> getCarts() {
return _carts;
}
public Long getId() {
return _receiptId;
}
public Long getCreatedOn() {
return _createdOn;
}
public Date getCreatedOnAsDate() {
if (_createdOn / 1000000000000000000l >= 1) {
return new Date(_createdOn / 1000000l);
}
return new Date(_createdOn);
}
public void setSentOn(final Long sentOn) {
_sentOn = sentOn;
}
public void setSent() {
_sentOn = System.nanoTime();
}
public Long getSentOn() {
return _sentOn;
}
public boolean isSent() {
return _sentOn == null;
}
public void setOwnerId(final Long ownerId) {
_ownerId = ownerId;
}
public void setOwner(final User owner) {
_ownerId = owner.getId();
}
public Long getOwnerId() {
return _ownerId;
}
}