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;

/**
 * Requete de création d'un paiement.
 *
 * @author UnionFlow Team
 * @version 3.0
 */
@Builder
public record CreatePaiementRequest(
                @NotBlank(message = "Le numéro de référence est obligatoire") String numeroReference,

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

                @NotBlank(message = "Le code devise est obligatoire") @Pattern(regexp = "^[A-Z]{3}$", message = "Le code devise doit être un code ISO à 3 lettres") String codeDevise,

                @NotBlank(message = "La méthode de paiement est obligatoire") String methodePaiement,

                String commentaire,

                @NotNull(message = "Le membre payeur est obligatoire") UUID membreId) {
}
