package dev.lions.unionflow.client.constants;

/**
 * Centralisation des chemins de vues JSF.
 *
 * <p>Lieu unique pour tous les outcomes de navigation. À utiliser depuis :
 * <ul>
 *   <li>XHTML : {@code outcome="#{paths.uboList}"} via {@link
 *       dev.lions.unionflow.client.view.ViewPathsBean}</li>
 *   <li>Java beans : {@code return ViewPaths.UBO_LIST + ViewPaths.REDIRECT_SUFFIX;}</li>
 * </ul>
 *
 * <p>Convention de nommage : {@code MODULE_PAGE} en MAJ avec underscore
 * (ex: {@code COTISATION_PAIEMENT}, {@code SUPER_ADMIN_DASHBOARD}).
 *
 * @since 2026-04-25 (Sprint 12 — centralisation navigation DRY)
 */
public final class ViewPaths {

  private ViewPaths() {
    // Classe utilitaire non instantiable
  }

  // ─── Suffixes ────────────────────────────────────────────────────────────
  public static final String REDIRECT_SUFFIX = "?faces-redirect=true";

  // ─── Index / racine / erreur ─────────────────────────────────────────────
  public static final String ROOT = "/";
  public static final String INDEX = "/index";

  // ─── Dashboard ───────────────────────────────────────────────────────────
  public static final String DASHBOARD = "/pages/secure/dashboard";
  public static final String DASHBOARD_MEMBRE = "/pages/secure/dashboard-membre";

  // ─── Profil personnel ────────────────────────────────────────────────────
  public static final String PROFILE = "/pages/secure/profile";
  public static final String PERSONNEL_PROFIL = "/pages/secure/personnel/profil";
  public static final String PERSONNEL_PARAMETRES = "/pages/secure/personnel/parametres";
  public static final String PERSONNEL_PREFERENCES = "/pages/secure/personnel/preferences";
  public static final String PERSONNEL_NOTIFICATIONS = "/pages/secure/personnel/notifications";

  // ─── Membres ─────────────────────────────────────────────────────────────
  public static final String MEMBRE_LISTE = "/pages/secure/membre/liste";
  public static final String MEMBRE_INSCRIPTION = "/pages/secure/membre/inscription";
  public static final String MEMBRE_VALIDATION = "/pages/secure/membre/validation";
  public static final String MEMBRE_IMPORT = "/pages/secure/membre/import";
  public static final String MEMBRE_EXPORT = "/pages/secure/membre/export";
  public static final String MEMBRE_RECHERCHE = "/pages/secure/membre/recherche";
  public static final String MEMBRE_COTISATIONS = "/pages/secure/membre/cotisations";
  public static final String MEMBRE_PROFIL = "/pages/secure/membre/profil";
  public static final String MEMBRE_PAIEMENT_COTISATIONS = "/pages/secure/membre/paiement-mes-cotisations";

  // ─── Adhésions ───────────────────────────────────────────────────────────
  public static final String ADHESION_LISTE = "/pages/secure/adhesion/liste";
  public static final String ADHESION_DEMANDE = "/pages/secure/adhesion/demande";
  public static final String ADHESION_VALIDATION = "/pages/secure/adhesion/validation";
  public static final String ADHESION_HISTORIQUE = "/pages/secure/adhesion/historique";
  public static final String ADHESION_RENOUVELLEMENT = "/pages/secure/adhesion/renouvellement";

  // ─── Cotisations ─────────────────────────────────────────────────────────
  public static final String COTISATIONS_GESTION_ADMIN = "/pages/admin/cotisations/gestion";
  public static final String COTISATION_PAIEMENT = "/pages/secure/cotisation/paiement";
  public static final String COTISATION_HISTORIQUE = "/pages/secure/cotisation/historique";
  public static final String COTISATION_RELANCES = "/pages/secure/cotisation/relances";

  // ─── Finance ─────────────────────────────────────────────────────────────
  public static final String FINANCE_TRESORERIE = "/pages/secure/finance/tresorerie";
  public static final String FINANCE_BUDGETS = "/pages/secure/finance/budgets";
  public static final String FINANCE_BILANS = "/pages/secure/finance/bilans";
  public static final String FINANCE_APPROBATIONS = "/pages/secure/finance/approbations";
  public static final String COMPTABILITE_GESTION = "/pages/secure/comptabilite/gestion";

  // ─── Épargne / Crédit ────────────────────────────────────────────────────
  public static final String EPARGNE_COMPTES = "/pages/secure/epargne/comptes";
  public static final String CREDIT_DEMANDES = "/pages/secure/credit/demandes";
  public static final String CREDIT_EVALUATION = "/pages/secure/credit/evaluation";
  public static final String CREDIT_SUIVI = "/pages/secure/credit/suivi";
  public static final String CREDIT_REMBOURSEMENTS = "/pages/secure/credit/remboursements";
  public static final String CREDIT_STATISTIQUES = "/pages/secure/credit/statistiques";

  // ─── Événements ──────────────────────────────────────────────────────────
  public static final String EVENEMENT_GESTION = "/pages/secure/evenement/gestion";
  public static final String EVENEMENT_CREATION = "/pages/secure/evenement/creation";
  public static final String EVENEMENT_CALENDRIER = "/pages/secure/evenement/calendrier";
  public static final String EVENEMENT_PARTICIPANTS = "/pages/secure/evenement/participants";
  public static final String EVENEMENT_PLANIFICATION = "/pages/secure/evenement/planification";
  public static final String EVENEMENT_LOGISTIQUE = "/pages/secure/evenement/logistique";
  public static final String EVENEMENT_BILAN = "/pages/secure/evenement/bilan";
  public static final String EVENEMENT_BILAN_DETAIL = "/pages/secure/evenement/bilan-detail";

  // ─── Aide / support ──────────────────────────────────────────────────────
  public static final String AIDE_DEMANDE = "/pages/secure/aide/demande";
  public static final String AIDE_REQUESTS = "/pages/secure/aide/requests";
  public static final String AIDE_APPROVED = "/pages/secure/aide/approved";
  public static final String AIDE_TRAITEMENT = "/pages/secure/aide/traitement";
  public static final String AIDE_HISTORIQUE = "/pages/secure/aide/historique";
  public static final String AIDE_STATISTIQUES = "/pages/secure/aide/statistiques";
  public static final String AIDE_FAQ = "/pages/secure/aide/faq";
  public static final String AIDE_SUPPORT = "/pages/secure/aide/support";
  public static final String AIDE_APROPOS = "/pages/secure/aide/apropos";

  // ─── Communication / Documents ───────────────────────────────────────────
  public static final String COMMUNICATION_CONVERSATIONS = "/pages/secure/communication/conversations";
  public static final String COMMUNICATION_NOTIFICATIONS = "/pages/secure/communication/notifications";
  public static final String DOCUMENTS_MES_DOCUMENTS = "/pages/secure/documents/mes-documents";

  // ─── Organisation ────────────────────────────────────────────────────────
  public static final String ORGANISATION_LISTE = "/pages/secure/organisation/liste";
  public static final String ORGANISATION_DETAIL = "/pages/secure/organisation/detail";
  public static final String ORGANISATION_NOUVELLE = "/pages/secure/organisation/nouvelle";
  public static final String ORGANISATION_STATISTIQUES = "/pages/secure/organisation/statistiques";

  // ─── Conformité (Sprints 8, 11) ──────────────────────────────────────────
  public static final String CONFORMITE_DASHBOARD = "/pages/secure/conformite/dashboard";
  public static final String CONFORMITE_RAPPORTS_TRIMESTRIELS = "/pages/secure/conformite/rapports-trimestriels";
  public static final String CONFORMITE_BENEFICIAIRES_EFFECTIFS = "/pages/secure/conformite/beneficiaires-effectifs";
  public static final String CONFORMITE_AUDIT_TRAIL = "/pages/secure/conformite/audit-trail";
  public static final String CONFORMITE_LIVE_FEED = "/pages/secure/conformite/live-feed";

  // ─── Admin technique ─────────────────────────────────────────────────────
  public static final String ADMIN_PISPI_READINESS = "/pages/secure/admin/pispi-readiness";
  public static final String ADMIN_ROLE_DELEGATIONS = "/pages/secure/admin/role-delegations";
  public static final String ADMIN_SAUVEGARDE = "/pages/secure/admin/sauvegarde";
  public static final String ADMIN_AUDIT_JOURNAL = "/pages/admin/audit/journal";
  public static final String ADMIN_LOGS_SYSTEME = "/pages/admin/logs/systeme";
  public static final String ADMIN_PARAMETRES = "/pages/admin/parametres";
  public static final String MEMBRE_PARAMETRES = "/pages/membre/parametres";

  // ─── Rapports ────────────────────────────────────────────────────────────
  public static final String RAPPORT_FINANCES = "/pages/secure/rapport/finances";
  public static final String RAPPORT_MEMBRES = "/pages/secure/rapport/membres";
  public static final String RAPPORT_ACTIVITES = "/pages/secure/rapport/activites";
  public static final String RAPPORT_TABLEAUX_BORD = "/pages/secure/rapport/tableaux-bord";
  public static final String RAPPORT_EXPORT = "/pages/secure/rapport/export";

  // ─── Souscription ────────────────────────────────────────────────────────
  public static final String SOUSCRIPTION_DASHBOARD = "/pages/secure/souscription/dashboard";

  // ─── Super-Admin ─────────────────────────────────────────────────────────
  public static final String SUPER_ADMIN_DASHBOARD = "/pages/super-admin/dashboard";
  public static final String SUPER_ADMIN_ROLES_GESTION = "/pages/super-admin/roles/gestion";
  public static final String SUPER_ADMIN_TYPES_ORGANISATIONS = "/pages/super-admin/types/organisations";
  public static final String SUPER_ADMIN_CONFIGURATION_SYSTEME = "/pages/super-admin/configuration/systeme";
}
