660 lines
42 KiB
HTML
660 lines
42 KiB
HTML
<!DOCTYPE html>
|
|
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
|
|
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
|
xmlns:f="http://xmlns.jcp.org/jsf/core"
|
|
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
|
|
xmlns:p="http://primefaces.org/ui"
|
|
template="/templates/main-template.xhtml">
|
|
|
|
<ui:define name="title">Profil de #{membreProfilBean.membre.nomComplet} - UnionFlow</ui:define>
|
|
|
|
<ui:define name="content">
|
|
<!-- En-tête avec photo et informations principales -->
|
|
<div class="grid">
|
|
<div class="col-12">
|
|
<div class="card">
|
|
<div class="flex align-items-start justify-content-between">
|
|
<div class="flex align-items-start">
|
|
<!-- Photo de profil -->
|
|
<div class="mr-4">
|
|
<ui:include src="/templates/components/profile-photo.xhtml">
|
|
<ui:param name="photoId" value="photoProfil" />
|
|
<ui:param name="photoUrl" value="#{membreProfilBean.membre.photoUrl}" />
|
|
<ui:param name="initiales" value="#{membreProfilBean.membre.initiales}" />
|
|
<ui:param name="formId" value="formPhoto" />
|
|
<ui:param name="listener" value="#{membreProfilBean.changerPhoto}" />
|
|
<ui:param name="update" value=":photoProfil" />
|
|
<ui:param name="size" value="120" />
|
|
</ui:include>
|
|
</div>
|
|
|
|
<!-- Informations principales -->
|
|
<div class="flex-1">
|
|
<div class="flex align-items-center mb-3">
|
|
<h2 class="m-0 mr-3">#{membreProfilBean.membre.nomComplet}</h2>
|
|
<p:tag value="#{membreProfilBean.membre.statut}"
|
|
severity="#{membreProfilBean.membre.statutSeverity}"
|
|
icon="pi #{membreProfilBean.membre.statutIcon}" />
|
|
</div>
|
|
|
|
<div class="grid">
|
|
<div class="col-12 md:col-6">
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Numéro membre" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.numeroMembre}" />
|
|
<ui:param name="valueClass" value="font-bold text-primary" />
|
|
</ui:include>
|
|
<div class="mb-2">
|
|
<span class="font-medium text-900">Type:</span>
|
|
<p:tag value="#{membreProfilBean.membre.typeMembre}"
|
|
severity="#{membreProfilBean.membre.typeSeverity}"
|
|
icon="pi #{membreProfilBean.membre.typeIcon}"
|
|
styleClass="ml-2" />
|
|
</div>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Entité" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.entite}" />
|
|
</ui:include>
|
|
</div>
|
|
<div class="col-12 md:col-6">
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Adhésion" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.dateAdhesion}" />
|
|
<ui:param name="suffix" value="(#{membreProfilBean.membre.anciennete})" />
|
|
</ui:include>
|
|
<div class="mb-2">
|
|
<span class="font-medium text-900">Cotisations:</span>
|
|
<span class="ml-2 #{membreProfilBean.membre.cotisationColor}">#{membreProfilBean.membre.cotisationStatut}</span>
|
|
</div>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Participation" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.tauxParticipation}%" />
|
|
<ui:param name="valueClass" value="font-bold text-blue-500" />
|
|
</ui:include>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Actions principales -->
|
|
<h:form id="formActionsPrincipales">
|
|
<div class="flex flex-column gap-2">
|
|
<ui:include src="/templates/components/buttons/button-warning.xhtml">
|
|
<ui:param name="value" value="Modifier" />
|
|
<ui:param name="icon" value="pi pi-pencil" />
|
|
<ui:param name="onclick" value="PF('dlgModifierProfil').show();" />
|
|
<ui:param name="outlined" value="true" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/buttons/button-success.xhtml">
|
|
<ui:param name="value" value="Cotisations" />
|
|
<ui:param name="icon" value="pi pi-dollar" />
|
|
<ui:param name="action" value="#{membreProfilBean.gererCotisations}" />
|
|
<ui:param name="outlined" value="true" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/buttons/button-info.xhtml">
|
|
<ui:param name="value" value="Contacter" />
|
|
<ui:param name="icon" value="pi pi-envelope" />
|
|
<ui:param name="onclick" value="PF('dlgContacter').show();" />
|
|
<ui:param name="outlined" value="true" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
|
|
<ui:param name="value" value="Actions" />
|
|
<ui:param name="icon" value="pi pi-cog" />
|
|
<ui:param name="onclick" value="PF('dlgActions').show();" />
|
|
<ui:param name="outlined" value="true" />
|
|
</ui:include>
|
|
</div>
|
|
</h:form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Statistiques et KPIs -->
|
|
<div class="grid">
|
|
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
|
<ui:param name="title" value="Événements" />
|
|
<ui:param name="value" value="#{membreProfilBean.statistiques.evenementsParticipes}" />
|
|
<ui:param name="icon" value="pi-calendar" />
|
|
<ui:param name="iconColor" value="blue-600" />
|
|
<ui:param name="showGrowth" value="false" />
|
|
<ui:param name="showProgress" value="false" />
|
|
<ui:param name="colSize" value="col-12 md:col-3" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
|
<ui:param name="title" value="Cotisations" />
|
|
<ui:param name="value" value="#{membreProfilBean.statistiques.cotisationsPayees}" />
|
|
<ui:param name="icon" value="pi-dollar" />
|
|
<ui:param name="iconColor" value="green-600" />
|
|
<ui:param name="showGrowth" value="false" />
|
|
<ui:param name="showProgress" value="false" />
|
|
<ui:param name="colSize" value="col-12 md:col-3" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
|
<ui:param name="title" value="Aides reçues" />
|
|
<ui:param name="value" value="#{membreProfilBean.statistiques.aidesRecues}" />
|
|
<ui:param name="icon" value="pi-heart" />
|
|
<ui:param name="iconColor" value="orange-600" />
|
|
<ui:param name="showGrowth" value="false" />
|
|
<ui:param name="showProgress" value="false" />
|
|
<ui:param name="colSize" value="col-12 md:col-3" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/cards/kpi-card.xhtml">
|
|
<ui:param name="title" value="Score engagement" />
|
|
<ui:param name="value" value="#{membreProfilBean.statistiques.scoreEngagement}" />
|
|
<ui:param name="icon" value="pi-star" />
|
|
<ui:param name="iconColor" value="purple-600" />
|
|
<ui:param name="showGrowth" value="false" />
|
|
<ui:param name="showProgress" value="false" />
|
|
<ui:param name="colSize" value="col-12 md:col-3" />
|
|
</ui:include>
|
|
</div>
|
|
|
|
<!-- Contenu principal avec onglets -->
|
|
<div class="card">
|
|
<p:tabView>
|
|
<!-- Onglet Informations personnelles -->
|
|
<p:tab title="👤 Informations personnelles">
|
|
<div class="grid">
|
|
<div class="col-12 md:col-6">
|
|
<h6 class="mb-3">Informations de base</h6>
|
|
<div class="surface-50 p-3 border-round">
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Nom complet" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.nomComplet}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Date de naissance" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.dateNaissance}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Genre" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.genre}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Situation familiale" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.situationFamiliale}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Profession" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.profession}" />
|
|
</ui:include>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-6">
|
|
<h6 class="mb-3">Coordonnées</h6>
|
|
<div class="surface-50 p-3 border-round">
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Email" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.email}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Téléphone" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.telephone}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Adresse" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.adresse}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Ville" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.ville}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Pays" />
|
|
<ui:param name="value" value="#{membreProfilBean.membre.pays}" />
|
|
</ui:include>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-12">
|
|
<h6 class="mb-3">Famille</h6>
|
|
<p:dataTable value="#{membreProfilBean.membre.famille}" var="membre_famille"
|
|
styleClass="p-datatable-sm" emptyMessage="Aucun membre de famille déclaré">
|
|
<p:column headerText="Nom complet">
|
|
<h:outputText value="#{membre_famille.nomComplet}" />
|
|
</p:column>
|
|
<p:column headerText="Relation">
|
|
<p:tag value="#{membre_famille.relation}" severity="info" />
|
|
</p:column>
|
|
<p:column headerText="Date de naissance">
|
|
<h:outputText value="#{membre_famille.dateNaissance}">
|
|
<f:convertDateTime pattern="dd/MM/yyyy" type="localDate" />
|
|
</h:outputText>
|
|
</p:column>
|
|
<p:column headerText="Bénéficiaire">
|
|
<p:tag value="#{membre_famille.beneficiaire ? 'Oui' : 'Non'}"
|
|
severity="#{membre_famille.beneficiaire ? 'success' : 'secondary'}" />
|
|
</p:column>
|
|
</p:dataTable>
|
|
</div>
|
|
</div>
|
|
</p:tab>
|
|
|
|
<!-- Onglet Cotisations -->
|
|
<p:tab title="💰 Cotisations">
|
|
<div class="grid">
|
|
<div class="col-12 md:col-6">
|
|
<h6 class="mb-3">État des cotisations</h6>
|
|
<div class="surface-50 p-3 border-round mb-3">
|
|
<div class="flex justify-content-between align-items-center mb-2">
|
|
<span class="font-medium">Statut actuel:</span>
|
|
<p:tag value="#{membreProfilBean.cotisations.statutActuel}"
|
|
severity="#{membreProfilBean.cotisations.statutSeverity}" />
|
|
</div>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Dernier paiement" />
|
|
<ui:param name="value" value="#{membreProfilBean.cotisations.dernierPaiement}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Prochaine échéance" />
|
|
<ui:param name="value" value="#{membreProfilBean.cotisations.prochaineEcheance}" />
|
|
<ui:param name="valueClass" value="#{membreProfilBean.cotisations.prochaineEcheanceClass}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Total payé cette année" />
|
|
<ui:param name="value" value="#{membreProfilBean.cotisations.totalAnnee}" />
|
|
<ui:param name="valueClass" value="font-bold text-green-500" />
|
|
</ui:include>
|
|
</div>
|
|
|
|
<h:form id="formCotisationsActions">
|
|
<div class="flex gap-2">
|
|
<ui:include src="/templates/components/buttons/button-success.xhtml">
|
|
<ui:param name="value" value="Nouveau paiement" />
|
|
<ui:param name="icon" value="pi pi-plus" />
|
|
<ui:param name="onclick" value="PF('dlgNouveauPaiement').show();" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/buttons/button-warning.xhtml">
|
|
<ui:param name="value" value="Envoyer rappel" />
|
|
<ui:param name="icon" value="pi pi-bell" />
|
|
<ui:param name="action" value="#{membreProfilBean.envoyerRappelCotisation}" />
|
|
<ui:param name="outlined" value="true" />
|
|
</ui:include>
|
|
</div>
|
|
</h:form>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-6">
|
|
<h6 class="mb-3">Historique des paiements</h6>
|
|
<p:dataTable value="#{membreProfilBean.cotisations.historique}" var="paiement"
|
|
rows="5" paginator="true" styleClass="p-datatable-sm">
|
|
<p:column headerText="Date">
|
|
<h:outputText value="#{paiement.date}">
|
|
<f:convertDateTime pattern="dd/MM/yyyy" type="localDate" />
|
|
</h:outputText>
|
|
</p:column>
|
|
<p:column headerText="Montant">
|
|
<h:outputText value="#{paiement.montant}" styleClass="font-bold">
|
|
<f:convertNumber type="currency" currencySymbol="FCFA " />
|
|
</h:outputText>
|
|
</p:column>
|
|
<p:column headerText="Mode">
|
|
<div class="flex align-items-center">
|
|
<i class="pi #{paiement.modeIcon} mr-2"></i>
|
|
<span>#{paiement.modePaiement}</span>
|
|
</div>
|
|
</p:column>
|
|
<p:column headerText="Statut">
|
|
<p:tag value="#{paiement.statut}" severity="#{paiement.statutSeverity}" />
|
|
</p:column>
|
|
</p:dataTable>
|
|
</div>
|
|
</div>
|
|
</p:tab>
|
|
|
|
<!-- Onglet Participation -->
|
|
<p:tab title="📅 Participation">
|
|
<div class="grid">
|
|
<div class="col-12 md:col-8">
|
|
<h6 class="mb-3">Événements récents</h6>
|
|
<ui:repeat value="#{membreProfilBean.evenements.recents}" var="evenement">
|
|
<div class="flex align-items-center p-3 mb-2 border-round surface-50">
|
|
<div class="border-round p-2 mr-3 bg-#{evenement.typeEvenementSeverity}">
|
|
<i class="pi #{evenement.typeEvenementIcon} text-white"></i>
|
|
</div>
|
|
<div class="flex-1">
|
|
<div class="font-medium text-900">#{evenement.titre}</div>
|
|
<div class="text-600 text-sm">
|
|
#{evenement.date} • #{evenement.lieu}
|
|
</div>
|
|
</div>
|
|
<div class="text-right">
|
|
<p:tag value="#{evenement.participation}"
|
|
severity="#{evenement.participationSeverity}" />
|
|
<div class="text-sm text-600 mt-1">
|
|
#{evenement.role}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</ui:repeat>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-4">
|
|
<h6 class="mb-3">Statistiques participation</h6>
|
|
<div class="surface-50 p-3 border-round">
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Taux de participation" />
|
|
<ui:param name="value" value="#{membreProfilBean.statistiques.tauxParticipation}%" />
|
|
<ui:param name="valueClass" value="font-bold text-blue-500" />
|
|
</ui:include>
|
|
<p:progressBar value="#{membreProfilBean.statistiques.tauxParticipation}"
|
|
labelTemplate="" styleClass="mb-3" />
|
|
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Cette année" />
|
|
<ui:param name="value" value="#{membreProfilBean.statistiques.evenementsAnnee}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Total" />
|
|
<ui:param name="value" value="#{membreProfilBean.statistiques.evenementsTotal}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="En tant qu'organisateur" />
|
|
<ui:param name="value" value="#{membreProfilBean.statistiques.evenementsOrganises}" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/forms/detail-field-row.xhtml">
|
|
<ui:param name="label" value="Absences" />
|
|
<ui:param name="value" value="#{membreProfilBean.statistiques.absences}" />
|
|
<ui:param name="valueClass" value="text-red-500" />
|
|
</ui:include>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</p:tab>
|
|
|
|
<!-- Onglet Aides et Services -->
|
|
<p:tab title="🤝 Aides et Services">
|
|
<div class="grid">
|
|
<div class="col-12 md:col-6">
|
|
<h6 class="mb-3">Aides reçues</h6>
|
|
<p:dataTable value="#{membreProfilBean.aides.recues}" var="aide"
|
|
styleClass="p-datatable-sm" emptyMessage="Aucune aide reçue">
|
|
<p:column headerText="Type">
|
|
<div class="flex align-items-center">
|
|
<i class="pi #{aide.typeIcon} mr-2 #{aide.typeColor}"></i>
|
|
<span>#{aide.type}</span>
|
|
</div>
|
|
</p:column>
|
|
<p:column headerText="Montant">
|
|
<h:outputText value="#{aide.montant}" styleClass="font-bold">
|
|
<f:convertNumber type="currency" currencySymbol="FCFA " />
|
|
</h:outputText>
|
|
</p:column>
|
|
<p:column headerText="Date">
|
|
<h:outputText value="#{aide.date}">
|
|
<f:convertDateTime pattern="dd/MM/yyyy" type="localDate" />
|
|
</h:outputText>
|
|
</p:column>
|
|
<p:column headerText="Statut">
|
|
<p:tag value="#{aide.statut}" severity="#{aide.statutSeverity}" />
|
|
</p:column>
|
|
</p:dataTable>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-6">
|
|
<h6 class="mb-3">Demandes en cours</h6>
|
|
<p:dataTable value="#{membreProfilBean.demandes.enCours}" var="demande"
|
|
styleClass="p-datatable-sm" emptyMessage="Aucune demande en cours">
|
|
<p:column headerText="Type">
|
|
<h:outputText value="#{demande.type}" />
|
|
</p:column>
|
|
<p:column headerText="Objet">
|
|
<h:outputText value="#{demande.objet}" />
|
|
</p:column>
|
|
<p:column headerText="Date">
|
|
<h:outputText value="#{demande.dateDepot}">
|
|
<f:convertDateTime pattern="dd/MM/yyyy" type="localDate" />
|
|
</h:outputText>
|
|
</p:column>
|
|
<p:column headerText="Statut">
|
|
<p:tag value="#{demande.statut}" severity="#{demande.statutSeverity}" />
|
|
</p:column>
|
|
</p:dataTable>
|
|
|
|
<h:form id="formNouvelleDemande">
|
|
<ui:include src="/templates/components/buttons/button-success.xhtml">
|
|
<ui:param name="value" value="Nouvelle demande" />
|
|
<ui:param name="icon" value="pi pi-plus" />
|
|
<ui:param name="onclick" value="PF('dlgNouvelleDemande').show();" />
|
|
<ui:param name="outlined" value="true" />
|
|
<ui:param name="styleClass" value="w-full mt-3" />
|
|
</ui:include>
|
|
</h:form>
|
|
</div>
|
|
</div>
|
|
</p:tab>
|
|
|
|
<!-- Onglet Historique -->
|
|
<p:tab title="📋 Historique">
|
|
<h6 class="mb-3">Activité récente</h6>
|
|
<ui:repeat value="#{membreProfilBean.historique.activites}" var="activite" varStatus="status">
|
|
<div class="flex align-items-start p-3 mb-3 border-round surface-50">
|
|
<div class="border-circle bg-primary text-white flex align-items-center justify-content-center mr-3"
|
|
style="width: 40px; height: 40px; min-width: 40px;">
|
|
<i class="pi #{activite.icone}"></i>
|
|
</div>
|
|
<div class="flex-1">
|
|
<div class="flex align-items-center justify-content-between mb-2">
|
|
<span class="font-medium text-900">#{activite.description}</span>
|
|
<small class="text-600">#{activite.date}</small>
|
|
</div>
|
|
<div class="text-600 text-sm mb-1">
|
|
Par #{activite.auteur}
|
|
</div>
|
|
<div class="text-sm text-700" rendered="#{activite.details != null}">
|
|
#{activite.details}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Ligne de connexion pour les éléments suivants -->
|
|
<div class="flex justify-content-center mb-3" rendered="#{!status.last}">
|
|
<div class="bg-300" style="width: 2px; height: 20px;"></div>
|
|
</div>
|
|
</ui:repeat>
|
|
|
|
<!-- Message si aucune activité -->
|
|
<div class="text-center p-4 text-600" rendered="#{empty membreProfilBean.historique.activites}">
|
|
<i class="pi pi-info-circle text-3xl mb-3"></i>
|
|
<div>Aucune activité récente</div>
|
|
</div>
|
|
</p:tab>
|
|
</p:tabView>
|
|
</div>
|
|
|
|
<!-- Dialog Modifier Profil -->
|
|
<p:dialog header="Modifier le Profil" widgetVar="dlgModifierProfil" modal="true" width="800">
|
|
<h:form id="formModifierProfil">
|
|
<div class="ui-fluid">
|
|
<div class="grid">
|
|
<div class="col-12 md:col-6">
|
|
<ui:include src="/templates/components/forms/form-field-text.xhtml">
|
|
<ui:param name="id" value="editPrenom" />
|
|
<ui:param name="label" value="Prénom" />
|
|
<ui:param name="value" value="#{membreProfilBean.membreEdit.prenom}" />
|
|
<ui:param name="required" value="true" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/forms/form-field-text.xhtml">
|
|
<ui:param name="id" value="editNom" />
|
|
<ui:param name="label" value="Nom" />
|
|
<ui:param name="value" value="#{membreProfilBean.membreEdit.nom}" />
|
|
<ui:param name="required" value="true" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/forms/form-field-text.xhtml">
|
|
<ui:param name="id" value="editEmail" />
|
|
<ui:param name="label" value="Email" />
|
|
<ui:param name="value" value="#{membreProfilBean.membreEdit.email}" />
|
|
<ui:param name="required" value="true" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/forms/form-field-text.xhtml">
|
|
<ui:param name="id" value="editTelephone" />
|
|
<ui:param name="label" value="Téléphone" />
|
|
<ui:param name="value" value="#{membreProfilBean.membreEdit.telephone}" />
|
|
<ui:param name="required" value="true" />
|
|
</ui:include>
|
|
</div>
|
|
|
|
<div class="col-12 md:col-6">
|
|
<ui:include src="/templates/components/forms/form-field-calendar.xhtml">
|
|
<ui:param name="id" value="editDateNaissance" />
|
|
<ui:param name="label" value="Date de naissance" />
|
|
<ui:param name="value" value="#{membreProfilBean.membreEdit.dateNaissance}" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/forms/form-field-text.xhtml">
|
|
<ui:param name="id" value="editProfession" />
|
|
<ui:param name="label" value="Profession" />
|
|
<ui:param name="value" value="#{membreProfilBean.membreEdit.profession}" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
|
|
<ui:param name="id" value="editAdresse" />
|
|
<ui:param name="label" value="Adresse" />
|
|
<ui:param name="value" value="#{membreProfilBean.membreEdit.adresse}" />
|
|
<ui:param name="rows" value="3" />
|
|
</ui:include>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex gap-2 mt-3">
|
|
<ui:include src="/templates/components/buttons/button-success.xhtml">
|
|
<ui:param name="value" value="Enregistrer" />
|
|
<ui:param name="icon" value="pi pi-check" />
|
|
<ui:param name="action" value="#{membreProfilBean.sauvegarderModifications}" />
|
|
<ui:param name="update" value=":formModifierProfil :photoProfil" />
|
|
<ui:param name="onclick" value="if(!args.validationFailed) PF('dlgModifierProfil').hide();" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
|
|
<ui:param name="value" value="Annuler" />
|
|
<ui:param name="icon" value="pi pi-times" />
|
|
<ui:param name="onclick" value="PF('dlgModifierProfil').hide();" />
|
|
</ui:include>
|
|
</div>
|
|
</h:form>
|
|
</p:dialog>
|
|
|
|
<!-- Dialog Contacter -->
|
|
<p:dialog header="Contacter #{membreProfilBean.membre.prenom}" widgetVar="dlgContacter" modal="true" width="500">
|
|
<h:form id="formContacter">
|
|
<div class="ui-fluid">
|
|
<ui:include src="/templates/components/forms/form-field-text.xhtml">
|
|
<ui:param name="id" value="sujetContact" />
|
|
<ui:param name="label" value="Sujet" />
|
|
<ui:param name="value" value="#{membreProfilBean.contact.sujet}" />
|
|
<ui:param name="required" value="true" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
|
|
<ui:param name="id" value="messageContact" />
|
|
<ui:param name="label" value="Message" />
|
|
<ui:param name="value" value="#{membreProfilBean.contact.message}" />
|
|
<ui:param name="required" value="true" />
|
|
<ui:param name="rows" value="5" />
|
|
</ui:include>
|
|
|
|
<div class="field">
|
|
<p:outputLabel for="canalContact" value="Canal de communication" />
|
|
<p:selectCheckboxMenu id="canalContact" value="#{membreProfilBean.contact.canaux}" multiple="true" styleClass="w-full">
|
|
<f:selectItem itemLabel="📧 Email" itemValue="EMAIL" />
|
|
<f:selectItem itemLabel="📱 SMS" itemValue="SMS" />
|
|
<f:selectItem itemLabel="💬 WhatsApp" itemValue="WHATSAPP" />
|
|
</p:selectCheckboxMenu>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex gap-2 mt-3">
|
|
<ui:include src="/templates/components/buttons/button-success.xhtml">
|
|
<ui:param name="value" value="Envoyer" />
|
|
<ui:param name="icon" value="pi pi-send" />
|
|
<ui:param name="action" value="#{membreProfilBean.envoyerMessage}" />
|
|
<ui:param name="update" value=":formContacter" />
|
|
<ui:param name="oncomplete" value="if(!args.validationFailed) PF('dlgContacter').hide();" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
|
|
<ui:param name="value" value="Annuler" />
|
|
<ui:param name="icon" value="pi pi-times" />
|
|
<ui:param name="onclick" value="PF('dlgContacter').hide();" />
|
|
</ui:include>
|
|
</div>
|
|
</h:form>
|
|
</p:dialog>
|
|
|
|
<!-- Dialog Actions -->
|
|
<p:dialog header="Actions sur le Membre" widgetVar="dlgActions" modal="true" width="400">
|
|
<h:form id="formActions">
|
|
<div class="grid">
|
|
<div class="col-12">
|
|
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
|
|
<ui:param name="value" value="Suspendre membre" />
|
|
<ui:param name="icon" value="pi pi-ban" />
|
|
<ui:param name="action" value="#{membreProfilBean.suspendre}" />
|
|
<ui:param name="onclick" value="return confirm('Êtes-vous sûr de vouloir suspendre ce membre ?');" />
|
|
<ui:param name="styleClass" value="ui-button-danger w-full mb-2" />
|
|
<ui:param name="rendered" value="#{membreProfilBean.membre.statut == 'ACTIF'}" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/buttons/button-success.xhtml">
|
|
<ui:param name="value" value="Réactiver membre" />
|
|
<ui:param name="icon" value="pi pi-check" />
|
|
<ui:param name="action" value="#{membreProfilBean.reactiver}" />
|
|
<ui:param name="styleClass" value="w-full mb-2" />
|
|
<ui:param name="rendered" value="#{membreProfilBean.membre.statut == 'SUSPENDU'}" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/buttons/button-warning.xhtml">
|
|
<ui:param name="value" value="Changer de type" />
|
|
<ui:param name="icon" value="pi pi-user-edit" />
|
|
<ui:param name="onclick" value="PF('dlgChangerType').show();" />
|
|
<ui:param name="outlined" value="true" />
|
|
<ui:param name="styleClass" value="w-full mb-2" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/buttons/button-info.xhtml">
|
|
<ui:param name="value" value="Transférer vers entité" />
|
|
<ui:param name="icon" value="pi pi-arrow-right" />
|
|
<ui:param name="onclick" value="PF('dlgTransferer').show();" />
|
|
<ui:param name="outlined" value="true" />
|
|
<ui:param name="styleClass" value="w-full mb-2" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
|
|
<ui:param name="value" value="Exporter données" />
|
|
<ui:param name="icon" value="pi pi-download" />
|
|
<ui:param name="action" value="#{membreProfilBean.exporterDonnees}" />
|
|
<ui:param name="outlined" value="true" />
|
|
<ui:param name="styleClass" value="w-full mb-2" />
|
|
<ui:param name="update" value="none" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
|
|
<ui:param name="value" value="Supprimer membre" />
|
|
<ui:param name="icon" value="pi pi-trash" />
|
|
<ui:param name="action" value="#{membreProfilBean.supprimer}" />
|
|
<ui:param name="onclick" value="return confirm('ATTENTION: Cette action est irréversible. Confirmer la suppression ?');" />
|
|
<ui:param name="outlined" value="true" />
|
|
<ui:param name="styleClass" value="ui-button-danger w-full" />
|
|
</ui:include>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex justify-content-end mt-3">
|
|
<ui:include src="/templates/components/buttons/button-secondary.xhtml">
|
|
<ui:param name="value" value="Fermer" />
|
|
<ui:param name="icon" value="pi pi-times" />
|
|
<ui:param name="onclick" value="PF('dlgActions').hide();" />
|
|
</ui:include>
|
|
</div>
|
|
</h:form>
|
|
</p:dialog>
|
|
</ui:define>
|
|
|
|
</ui:composition> |