package dev.lions.unionflow.client.view;

import dev.lions.unionflow.client.constants.ViewPaths;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Named;
import java.io.Serializable;

/**
 * Bean exposant {@link ViewPaths} aux pages JSF via expressions EL.
 *
 * <p>Usage XHTML : {@code outcome="#{paths.uboList}"}.
 *
 * <p>Le bean est {@code @ApplicationScoped} car les chemins sont immuables et identiques pour
 * tous les utilisateurs — un seul instance suffit.
 *
 * @since 2026-04-25 (Sprint 12)
 */
@Named("paths")
@ApplicationScoped
public class ViewPathsBean implements Serializable {

  private static final long serialVersionUID = 1L;

  // ─── Index / Dashboard ───────────────────────────────────────────────────
  public String getRoot() { return ViewPaths.ROOT; }
  public String getIndex() { return ViewPaths.INDEX; }
  public String getDashboard() { return ViewPaths.DASHBOARD; }
  public String getDashboardMembre() { return ViewPaths.DASHBOARD_MEMBRE; }

  // ─── Profil personnel ────────────────────────────────────────────────────
  public String getProfile() { return ViewPaths.PROFILE; }
  public String getPersonnelProfil() { return ViewPaths.PERSONNEL_PROFIL; }
  public String getPersonnelParametres() { return ViewPaths.PERSONNEL_PARAMETRES; }
  public String getPersonnelPreferences() { return ViewPaths.PERSONNEL_PREFERENCES; }
  public String getPersonnelNotifications() { return ViewPaths.PERSONNEL_NOTIFICATIONS; }

  // ─── Membres ─────────────────────────────────────────────────────────────
  public String getMembreListe() { return ViewPaths.MEMBRE_LISTE; }
  public String getMembreInscription() { return ViewPaths.MEMBRE_INSCRIPTION; }
  public String getMembreValidation() { return ViewPaths.MEMBRE_VALIDATION; }
  public String getMembreImport() { return ViewPaths.MEMBRE_IMPORT; }
  public String getMembreExport() { return ViewPaths.MEMBRE_EXPORT; }
  public String getMembreRecherche() { return ViewPaths.MEMBRE_RECHERCHE; }
  public String getMembreCotisations() { return ViewPaths.MEMBRE_COTISATIONS; }
  public String getMembreProfil() { return ViewPaths.MEMBRE_PROFIL; }
  public String getMembrePaiementCotisations() { return ViewPaths.MEMBRE_PAIEMENT_COTISATIONS; }

  // ─── Adhésions ───────────────────────────────────────────────────────────
  public String getAdhesionListe() { return ViewPaths.ADHESION_LISTE; }
  public String getAdhesionDemande() { return ViewPaths.ADHESION_DEMANDE; }
  public String getAdhesionValidation() { return ViewPaths.ADHESION_VALIDATION; }
  public String getAdhesionHistorique() { return ViewPaths.ADHESION_HISTORIQUE; }
  public String getAdhesionRenouvellement() { return ViewPaths.ADHESION_RENOUVELLEMENT; }

  // ─── Cotisations ─────────────────────────────────────────────────────────
  public String getCotisationsGestionAdmin() { return ViewPaths.COTISATIONS_GESTION_ADMIN; }
  public String getCotisationPaiement() { return ViewPaths.COTISATION_PAIEMENT; }
  public String getCotisationHistorique() { return ViewPaths.COTISATION_HISTORIQUE; }
  public String getCotisationRelances() { return ViewPaths.COTISATION_RELANCES; }

  // ─── Finance ─────────────────────────────────────────────────────────────
  public String getFinanceTresorerie() { return ViewPaths.FINANCE_TRESORERIE; }
  public String getFinanceBudgets() { return ViewPaths.FINANCE_BUDGETS; }
  public String getFinanceBilans() { return ViewPaths.FINANCE_BILANS; }
  public String getFinanceApprobations() { return ViewPaths.FINANCE_APPROBATIONS; }
  public String getComptabiliteGestion() { return ViewPaths.COMPTABILITE_GESTION; }

  // ─── Épargne / Crédit ────────────────────────────────────────────────────
  public String getEpargneComptes() { return ViewPaths.EPARGNE_COMPTES; }
  public String getCreditDemandes() { return ViewPaths.CREDIT_DEMANDES; }
  public String getCreditEvaluation() { return ViewPaths.CREDIT_EVALUATION; }
  public String getCreditSuivi() { return ViewPaths.CREDIT_SUIVI; }
  public String getCreditRemboursements() { return ViewPaths.CREDIT_REMBOURSEMENTS; }
  public String getCreditStatistiques() { return ViewPaths.CREDIT_STATISTIQUES; }

  // ─── Événements ──────────────────────────────────────────────────────────
  public String getEvenementGestion() { return ViewPaths.EVENEMENT_GESTION; }
  public String getEvenementCreation() { return ViewPaths.EVENEMENT_CREATION; }
  public String getEvenementCalendrier() { return ViewPaths.EVENEMENT_CALENDRIER; }
  public String getEvenementParticipants() { return ViewPaths.EVENEMENT_PARTICIPANTS; }
  public String getEvenementPlanification() { return ViewPaths.EVENEMENT_PLANIFICATION; }
  public String getEvenementLogistique() { return ViewPaths.EVENEMENT_LOGISTIQUE; }
  public String getEvenementBilan() { return ViewPaths.EVENEMENT_BILAN; }
  public String getEvenementBilanDetail() { return ViewPaths.EVENEMENT_BILAN_DETAIL; }

  // ─── Aide / Support ──────────────────────────────────────────────────────
  public String getAideDemande() { return ViewPaths.AIDE_DEMANDE; }
  public String getAideRequests() { return ViewPaths.AIDE_REQUESTS; }
  public String getAideApproved() { return ViewPaths.AIDE_APPROVED; }
  public String getAideTraitement() { return ViewPaths.AIDE_TRAITEMENT; }
  public String getAideHistorique() { return ViewPaths.AIDE_HISTORIQUE; }
  public String getAideStatistiques() { return ViewPaths.AIDE_STATISTIQUES; }
  public String getAideFaq() { return ViewPaths.AIDE_FAQ; }
  public String getAideSupport() { return ViewPaths.AIDE_SUPPORT; }
  public String getAideApropos() { return ViewPaths.AIDE_APROPOS; }

  // ─── Communication / Documents ───────────────────────────────────────────
  public String getCommunicationConversations() { return ViewPaths.COMMUNICATION_CONVERSATIONS; }
  public String getCommunicationNotifications() { return ViewPaths.COMMUNICATION_NOTIFICATIONS; }
  public String getDocumentsMesDocuments() { return ViewPaths.DOCUMENTS_MES_DOCUMENTS; }

  // ─── Organisation ────────────────────────────────────────────────────────
  public String getOrganisationListe() { return ViewPaths.ORGANISATION_LISTE; }
  public String getOrganisationDetail() { return ViewPaths.ORGANISATION_DETAIL; }
  public String getOrganisationNouvelle() { return ViewPaths.ORGANISATION_NOUVELLE; }
  public String getOrganisationStatistiques() { return ViewPaths.ORGANISATION_STATISTIQUES; }

  // ─── Conformité (Sprints 8, 11) ──────────────────────────────────────────
  public String getConformiteDashboard() { return ViewPaths.CONFORMITE_DASHBOARD; }
  public String getConformiteRapportsTrimestriels() { return ViewPaths.CONFORMITE_RAPPORTS_TRIMESTRIELS; }
  public String getConformiteBeneficiairesEffectifs() { return ViewPaths.CONFORMITE_BENEFICIAIRES_EFFECTIFS; }
  public String getConformiteAuditTrail() { return ViewPaths.CONFORMITE_AUDIT_TRAIL; }
  public String getConformiteLiveFeed() { return ViewPaths.CONFORMITE_LIVE_FEED; }

  // ─── Admin technique ─────────────────────────────────────────────────────
  public String getAdminPispiReadiness() { return ViewPaths.ADMIN_PISPI_READINESS; }
  public String getAdminRoleDelegations() { return ViewPaths.ADMIN_ROLE_DELEGATIONS; }
  public String getAdminSauvegarde() { return ViewPaths.ADMIN_SAUVEGARDE; }
  public String getAdminAuditJournal() { return ViewPaths.ADMIN_AUDIT_JOURNAL; }
  public String getAdminLogsSysteme() { return ViewPaths.ADMIN_LOGS_SYSTEME; }
  public String getAdminParametres() { return ViewPaths.ADMIN_PARAMETRES; }
  public String getMembreParametres() { return ViewPaths.MEMBRE_PARAMETRES; }

  // ─── Rapports ────────────────────────────────────────────────────────────
  public String getRapportFinances() { return ViewPaths.RAPPORT_FINANCES; }
  public String getRapportMembres() { return ViewPaths.RAPPORT_MEMBRES; }
  public String getRapportActivites() { return ViewPaths.RAPPORT_ACTIVITES; }
  public String getRapportTableauxBord() { return ViewPaths.RAPPORT_TABLEAUX_BORD; }
  public String getRapportExport() { return ViewPaths.RAPPORT_EXPORT; }

  // ─── Souscription ────────────────────────────────────────────────────────
  public String getSouscriptionDashboard() { return ViewPaths.SOUSCRIPTION_DASHBOARD; }

  // ─── Super-Admin ─────────────────────────────────────────────────────────
  public String getSuperAdminDashboard() { return ViewPaths.SUPER_ADMIN_DASHBOARD; }
  public String getSuperAdminRolesGestion() { return ViewPaths.SUPER_ADMIN_ROLES_GESTION; }
  public String getSuperAdminTypesOrganisations() { return ViewPaths.SUPER_ADMIN_TYPES_ORGANISATIONS; }
  public String getSuperAdminConfigurationSysteme() { return ViewPaths.SUPER_ADMIN_CONFIGURATION_SYSTEME; }
}
