package dev.lions.unionflow.server.api.dto.mutuelle.epargne;

import dev.lions.unionflow.server.api.enums.mutuelle.epargne.TypeTransactionEpargne;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.eclipse.microprofile.openapi.annotations.media.Schema;

import java.math.BigDecimal;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(description = "Requête d'initialisation d'une transaction sur un compte d'épargne")
public class TransactionEpargneRequest {

    @NotBlank(message = "L'ID du compte épargne cible est obligatoire")
    private String compteId;

    @NotNull(message = "Le type de transaction est requis")
    private TypeTransactionEpargne typeTransaction;

    @NotNull(message = "Le montant est obligatoire")
    @DecimalMin(value = "0.01", message = "Le montant doit être supérieur à 0")
    private BigDecimal montant;

    @Schema(description = "ID d'un compte de destination en cas de transfert interne")
    private String compteDestinationId;

    @Schema(description = "Motif, libellé ou preuve de dépôt")
    private String motif;

    @Schema(description = "Origine des fonds (LCB-FT) — obligatoire au-dessus du seuil configuré (ex. Salaire, Vente, Héritage)")
    private String origineFonds;

    @Schema(description = "ID de la pièce justificative (document) — requis au-dessus du seuil LCB-FT")
    private String pieceJustificativeId;
}
