source: backend/web3-Ednevnik-Backend/src/main/java/com/nikola/web3ednevnikbackend/model/payments/Plakjanje.java

Last change on this file was 81cdf2d, checked in by Nikola Janev <nikolajanev57@…>, 10 days ago

initial commit

  • Property mode set to 100644
File size: 2.0 KB
Line 
1package com.nikola.web3ednevnikbackend.model.payments;
2
3import com.nikola.web3ednevnikbackend.model.announcements.SoopstenieZa_Plakjanje;
4import com.nikola.web3ednevnikbackend.model.enums.StatusPlakjanje;
5import com.nikola.web3ednevnikbackend.model.users.Roditel;
6import jakarta.persistence.*;
7import lombok.Data;
8
9import java.math.BigDecimal;
10import java.time.Instant;
11import java.time.LocalDateTime;
12import java.util.UUID;
13
14@Entity
15@Table(name = "plakjanje", uniqueConstraints = {
16 @UniqueConstraint(columnNames = {"platenoOdRoditel_Id", "soopstenie_za_plakjanje_id"})
17})
18@Data
19public class Plakjanje {
20
21 @Id
22 @GeneratedValue(strategy = GenerationType.UUID)
23 private UUID id;
24
25 @Enumerated(EnumType.STRING)
26 @Column(nullable = false)
27 private StatusPlakjanje status;
28
29 @Column(name = "tx_hash", unique = true, length = 100)
30 private String txHash;
31
32 @Column(nullable = false, length = 10)
33 private String valuta;
34
35 @Column(name = "plateno_na")
36 private Instant platenoNa;
37
38 @Column(nullable = false, precision = 38, scale = 18)
39 private BigDecimal iznos;
40
41 @ManyToOne
42 @JoinColumn(name = "platenoOdRoditel_Id", nullable = false)
43 private Roditel platenoOdRoditel;
44
45 @ManyToOne
46 @JoinColumn(name = "soopstenie_za_plakjanje_id", nullable = false)
47 private SoopstenieZa_Plakjanje soopstenieZaPlakjanje;
48
49 @Column(name = "created_at", nullable = false, updatable = false)
50 private Instant createdAt;
51
52 @PrePersist
53 @PreUpdate
54 private void validateTxHashBasedOnStatus() {
55 if (status == StatusPlakjanje.KREIRANO && txHash != null) {
56 throw new IllegalStateException("KREIRANO payment must have null tx_hash");
57 }
58 if ((status == StatusPlakjanje.TX_SUBMITTED ||
59 status == StatusPlakjanje.ODOBRENO ||
60 status == StatusPlakjanje.ZAVRSENO || status == StatusPlakjanje.FAILED) && txHash == null) {
61 throw new IllegalStateException("SUBMITED/Approved/Completed payment must have tx_hash");
62 }
63 }
64}
Note: See TracBrowser for help on using the repository browser.