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

import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.Size;
import java.util.List;
import java.util.Map;
import lombok.Builder;

/**
 * Requête de mise à jour d'un utilisateur Keycloak.
 *
 * @param prenom        Prénom de l'utilisateur (optionnel).
 * @param nom           Nom de l'utilisateur (optionnel).
 * @param email         Adresse email (optionnel).
 * @param enabled       Indique si le compte est activé (optionnel).
 * @param emailVerified Indique si l'email est vérifié (optionnel).
 * @param realmRoles    Liste des rôles à assigner (optionnel - écrase les rôles existants si fourni).
 * @param attributes    Attributs personnalisés (optionnel).
 * @author UnionFlow Team
 * @version 1.0
 * @since 2026-02-28
 */
@Builder
public record UpdateUserRequest(
        @Size(max = 100) String prenom,

        @Size(max = 100) String nom,

        @Email(message = "Format d'email invalide") String email,

        Boolean enabled,

        Boolean emailVerified,

        List<String> realmRoles,

        Map<String, List<String>> attributes) {
}
