| package pl.hackerspace.domain; |
| |
| import jakarta.persistence.Column; |
| import jakarta.persistence.Entity; |
| import jakarta.persistence.Id; |
| import jakarta.persistence.OneToMany; |
| import jakarta.persistence.Table; |
| import lombok.AllArgsConstructor; |
| import lombok.Builder; |
| import lombok.Data; |
| import lombok.NoArgsConstructor; |
| |
| import java.math.BigDecimal; |
| import java.util.Set; |
| |
| @Entity |
| @Table(name = "client") |
| @Data |
| @NoArgsConstructor |
| @AllArgsConstructor |
| @Builder |
| public class Client { |
| |
| @Id |
| private String nip; |
| |
| @Column(nullable = false) |
| private String name; |
| |
| @Column(nullable = false) |
| private String email; |
| |
| private String addressLine1; |
| private String addressLine2; |
| |
| @Column(nullable = false) |
| private String serviceName; |
| |
| @Column(nullable = false) |
| private BigDecimal price; |
| |
| @Builder.Default |
| @Column(nullable = false) |
| private BigDecimal amount = BigDecimal.valueOf(1); |
| |
| @Builder.Default |
| @Column(nullable = false) |
| private BigDecimal vat = BigDecimal.valueOf(23); |
| |
| @Builder.Default |
| @Column(nullable = false) |
| private int paymentOffsetDays = 14; |
| |
| @Builder.Default |
| private boolean subscriber = true; |
| |
| private boolean prepaid; |
| |
| @OneToMany(mappedBy="client") |
| Set<Invoice> invoices; |
| |
| public byte[] getInvoiceForSubscriptionMonth(String monthOfInvoice) { |
| return invoices.stream() |
| .filter(i -> monthOfInvoice.equals(i.getMonthOfSubscription())) |
| .map(Invoice::getPdfContent) |
| .findFirst() |
| .orElse(null); |
| } |
| } |