Untitled
package pl.santander.bancassurance.comparison.commission.infra.policy.purchased; import lombok.*; import pl.santander.bancassurance.comparison.commission.domain.shared.InsuranceCompany; import jakarta.validation.Valid; import jakarta.validation.constraints.DecimalMin; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor @Getter @ToString public class PolicyPurchasedEvent { @NotBlank(message = "must not be null") private String policyNumber; @NotNull(message = "must not be null") @DecimalMin(value = "0.0", message = "must be at least 0") private BigDecimal price; @NotNull(message = "must not be null") private InsuranceCompany insuranceCompany; @NotNull(message = "must not be null") private LocalDateTime purchaseDate; @Singular @Valid @NotNull(message = "must not be null") @NotEmpty(message = "not be empty") private List<PolicyRisk> risks; @NotNull(message = "must not be null") private Boolean bankEmployee; public LocalDate getPurchaseDateAsLocalDate() { if (purchaseDate == null) { return null; } return purchaseDate.toLocalDate(); } } --- package pl.santander.bancassurance.comparison.commission.infra.policy.payment; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import pl.santander.bancassurance.comparison.commission.domain.shared.InsuranceCompany; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import static lombok.AccessLevel.PRIVATE; import static lombok.AccessLevel.PROTECTED; @Data @Builder @AllArgsConstructor(access = PRIVATE) @NoArgsConstructor(access = PROTECTED) public class PaymentConfirmedEvent { @NotNull @NotEmpty private String policyNumber; @NotNull private InsuranceCompany insuranceCompany; } --- package pl.santander.bancassurance.comparison.commission.infra.policy.aftersale.cash; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.validation.constraints.AssertTrue; import lombok.*; import pl.santander.bancassurance.comparison.commission.domain.shared.InsuranceCompany; import jakarta.validation.Valid; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import java.time.LocalDate; import java.util.List; @Getter @NoArgsConstructor @AllArgsConstructor @ToString(callSuper = true) class PolicyCashEvent { @NotNull(message = "must not be null") private InsuranceCompany insuranceCompany; @NotBlank(message = "must not be null") private String policyNumber; private LocalDate postingDate; private LocalDate refundDate; @Singular @Valid @NotNull(message = "must not be null") @NotEmpty(message = "not be empty") private List<PolicyCashRisk> risks; @JsonIgnore @AssertTrue(message = "postingDate or refundDate is null when risk contains collection or refund") public boolean isPostingAndRefundDateCorrect() { if (postingDate == null && risks.stream().anyMatch(e -> e.getCollection() != null)) { return false; } return refundDate != null || risks.stream().noneMatch(e -> e.getRefundAmount() != null); } } --- package pl.santander.bancassurance.comparison.commission.infra.policy.aftersale.update; import lombok.*; import pl.santander.bancassurance.comparison.commission.domain.shared.InsuranceCompany; import jakarta.validation.Valid; import jakarta.validation.constraints.DecimalMin; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor @Getter @ToString public class PolicyUpdateEvent { @NotBlank(message = "must not be null") private String policyNumber; @NotNull(message = "must not be null") @DecimalMin(value = "0.0", message = "must be at least 0") private BigDecimal price; @NotNull(message = "must not be null") private InsuranceCompany insuranceCompany; @Valid @NotEmpty(message = "not be empty") @Singular private List<PolicyUpdateRisk> risks; }
Leave a Comment