Untitled

 avatar
unknown
plain_text
a month ago
4.7 kB
2
Indexable
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