diff --git a/src/main/java/com/acquirex/domain/CardAcquisition.java b/src/main/java/com/acquirex/domain/CardAcquisition.java new file mode 100644 index 0000000..42fd37b --- /dev/null +++ b/src/main/java/com/acquirex/domain/CardAcquisition.java @@ -0,0 +1,51 @@ +package com.acquirex.domain; + +import jakarta.persistence.*; +import lombok.*; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Entity +@Table(name = "card_acquisitions") +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class CardAcquisition { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "card_number", nullable = false, length = 20) + private String cardNumber; + + @Column(name = "merchant_id", nullable = false, length = 20) + private String merchantId; + + @Column(name = "amount", nullable = false, precision = 15, scale = 2) + private BigDecimal amount; + + @Enumerated(EnumType.STRING) + @Column(name = "status", nullable = false, length = 20) + private AcquisitionStatus status; + + @Column(name = "requested_at", nullable = false) + private LocalDateTime requestedAt; + + @Column(name = "approved_at") + private LocalDateTime approvedAt; + + @Column(name = "approved_by", length = 50) + private String approvedBy; + + @PrePersist + protected void onCreate() { + if (requestedAt == null) requestedAt = LocalDateTime.now(); + if (status == null) status = AcquisitionStatus.PENDING; + } +} + +enum AcquisitionStatus { + PENDING, APPROVED, REJECTED, CANCELLED +} \ No newline at end of file