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

import dev.lions.unionflow.server.api.dto.base.BaseResponse;
import java.time.LocalDate;
import java.util.UUID;
import java.util.List;
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 membre.
 *
 * <p>
 * Classe Lombok (getters/setters) pour la
 * compatibilité avec les frameworks d'affichage
 * (PrimeFaces, etc.).
 *
 * @author UnionFlow Team
 * @version 3.0
 * @since 2026-02-21
 */
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MembreResponse extends BaseResponse {

    // ── Identité ───────────────────────────────
    private String numeroMembre;
    private UUID keycloakId;
    private String prenom;
    private String nom;
    private String nomComplet;
    private String email;
    private String telephone;
    private String telephoneWave;
    private LocalDate dateNaissance;
    private int age;

    // ── Personnel ──────────────────────────────
    private String profession;
    private String photoUrl;
    private String statutMatrimonial;
    private String statutMatrimonialLibelle;
    private String nationalite;
    private String typeIdentite;
    private String typeIdentiteLibelle;
    private String numeroIdentite;

    // ── KYC / LCB-FT ───────────────────────────
    private String niveauVigilanceKyc;
    private String statutKyc;
    private LocalDate dateVerificationIdentite;

    // ── Statut ─────────────────────────────────
    private String statutCompte;
    private String statutCompteLibelle;
    private String statutCompteSeverity;
    private List<String> roles;

    // ── Adhésion (contexte organisation) ───────
    private UUID organisationId;
    private String associationNom;
    private LocalDate dateAdhesion;
}
