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

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import java.util.UUID;

import lombok.Builder;

/**
 * Requête de création d'une donnée de référence.
 *
 * <p>
 * Utilisé pour ajouter une nouvelle valeur dans
 * un domaine existant de la table
 * {@code types_reference}.
 *
 * @author UnionFlow Team
 * @version 3.0
 * @since 2026-02-21
 */
@Builder
public record CreateTypeReferenceRequest(

                /** Domaine fonctionnel (ex: STATUT_ORGANISATION). */
                @NotBlank @Size(max = 50) String domaine,

                /** Code technique unique dans le domaine. */
                @NotBlank @Size(max = 50) String code,

                /** Libellé affiché dans l'interface. */
                @NotBlank @Size(max = 200) String libelle,

                /** Description longue optionnelle. */
                @Size(max = 1000) String description,

                /** Classe d'icône PrimeFaces (ex: pi-check). */
                @Size(max = 100) String icone,

                /** Code couleur hexadécimal (ex: #22C55E). */
                @Size(max = 50) String couleur,

                /** Sévérité PrimeFaces (success, warning...). */
                @Size(max = 20) String severity,

                /** Ordre d'affichage dans les listes. */
                Integer ordreAffichage,

                /** Valeur par défaut pour ce domaine. */
                Boolean estDefaut,

                /** Protégée contre la suppression admin. */
                Boolean estSysteme,

                /** UUID de l'organisation (null = global). */
                UUID organisationId) {
}
