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

import dev.lions.unionflow.server.api.dto.base.BaseResponse;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

/**
 * Réponse contenant les données d'un utilisateur Keycloak.
 *
 * @author UnionFlow Team
 * @version 1.0
 * @since 2026-02-28
 */
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class UserResponse extends BaseResponse {

    // ── Identité ───────────────────────────────
    private String username;
    private String prenom;
    private String nom;
    private String email;
    private Boolean emailVerified;

    // ── État du compte ─────────────────────────
    private Boolean enabled;
    private String statut; // ACTIF, INACTIF, SUSPENDU
    private LocalDateTime dateCreation;
    private LocalDateTime derniereConnexion;

    // ── Rôles et permissions ───────────────────
    private List<String> roles;
    private List<String> realmRoles;
    private String primaryRole; // Rôle principal

    // ── Attributs personnalisés ────────────────
    private Map<String, List<String>> attributes;

    // ── Métadonnées ────────────────────────────
    private Boolean totp; // 2FA activé
    private Integer failedLoginAttempts;
}
