package dev.lions.unionflow.server.api.dto.paiement.request;

import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import java.math.BigDecimal;
import java.util.UUID;
import lombok.Builder;

/**
 * Requête pour initier un dépôt sur compte épargne via Wave (mobile money).
 * Réutilise le même flux que les cotisations : Wave Checkout → redirection → deep link.
 *
 * @param compteId ID du compte épargne à créditer
 * @param montant Montant du dépôt (XOF)
 * @param numeroTelephone Numéro Wave du membre (9 chiffres)
 * @param origineFonds Origine des fonds (LCB-FT) — obligatoire au-dessus du seuil configuré
 * @param justificationLcbFt Justification complémentaire LCB-FT si nécessaire
 */
@Builder
public record InitierDepotEpargneRequest(
    @NotNull(message = "L'ID du compte épargne est obligatoire")
    UUID compteId,

    @NotNull(message = "Le montant est obligatoire")
    @DecimalMin(value = "1", message = "Le montant doit être strictement positif")
    BigDecimal montant,

    @NotBlank(message = "Le numéro de téléphone Wave est obligatoire")
    @Pattern(regexp = "^\\d{9,15}$", message = "Numéro de téléphone invalide (9-15 chiffres)")
    String numeroTelephone,

    String origineFonds,

    String justificationLcbFt
) {
}
