255 lines
14 KiB
HTML
255 lines
14 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:param name="page" value="#{adhesionsBean}"/>
|
|
<ui:define name="title">Validation des Adhésions - UnionFlow</ui:define>
|
|
|
|
<ui:define name="content">
|
|
<!-- En-tête -->
|
|
<ui:include src="/templates/components/layout/page-header.xhtml">
|
|
<ui:param name="icon" value="pi pi-check-circle text-green-500" />
|
|
<ui:param name="title" value="Validation des Adhésions" />
|
|
<ui:param name="description" value="Approbation et rejet des demandes d'adhésion" />
|
|
<ui:define name="actions">
|
|
<h:form id="formActionsValidation">
|
|
<div class="flex gap-2">
|
|
<ui:include src="/templates/components/buttons/button-icon.xhtml">
|
|
<ui:param name="icon" value="pi pi-refresh" />
|
|
<ui:param name="action" value="#{adhesionsBean.chargerAdhesionsEnAttente}" />
|
|
<ui:param name="update" value="@form" />
|
|
<ui:param name="title" value="Actualiser" />
|
|
<ui:param name="rounded" value="true" />
|
|
<ui:param name="text" value="false" />
|
|
<ui:param name="styleClass" value="ui-button-outlined ui-button-secondary" />
|
|
</ui:include>
|
|
</div>
|
|
</h:form>
|
|
</ui:define>
|
|
</ui:include>
|
|
|
|
<!-- Statistiques -->
|
|
<div class="grid">
|
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
|
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsEnAttente}" />
|
|
<ui:param name="label" value="En Attente" />
|
|
<ui:param name="icon" value="pi pi-clock" />
|
|
<ui:param name="bgColor" value="orange" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
|
<ui:param name="value" value="#{adhesionsBean.statistiques.adhesionsApprouvees}" />
|
|
<ui:param name="label" value="Approuvées" />
|
|
<ui:param name="icon" value="pi pi-check-circle" />
|
|
<ui:param name="bgColor" value="green" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
|
<ui:param name="value" value="#{adhesionsBean.statistiques.tauxApprobationInt}%" />
|
|
<ui:param name="label" value="Taux d'Approbation" />
|
|
<ui:param name="icon" value="pi pi-percentage" />
|
|
<ui:param name="bgColor" value="blue" />
|
|
</ui:include>
|
|
|
|
<ui:include src="/templates/components/cards/stat-card.xhtml">
|
|
<ui:param name="value" value="#{adhesionsBean.statistiques.totalAdhesions}" />
|
|
<ui:param name="label" value="Total" />
|
|
<ui:param name="icon" value="pi pi-users" />
|
|
<ui:param name="bgColor" value="purple" />
|
|
</ui:include>
|
|
</div>
|
|
|
|
<!-- Liste des adhésions en attente -->
|
|
<div class="card">
|
|
<h:form id="formValidation">
|
|
<h5>Adhésions en Attente de Validation</h5>
|
|
|
|
<p:dataTable id="dtValidation"
|
|
value="#{adhesionsBean.adhesionsFiltrees}"
|
|
var="adhesion"
|
|
paginator="true"
|
|
rows="20"
|
|
emptyMessage="Aucune adhésion en attente">
|
|
|
|
<f:facet name="header">
|
|
<div class="flex align-items-center justify-content-between">
|
|
<span>Demandes nécessitant une validation</span>
|
|
</div>
|
|
</f:facet>
|
|
|
|
<p:column headerText="Référence" sortBy="#{adhesion.numeroReference}" style="width:150px">
|
|
<h:outputText value="#{adhesion.numeroReference}" />
|
|
</p:column>
|
|
|
|
<p:column headerText="Membre" sortBy="#{adhesion.nomMembre}">
|
|
<div>
|
|
<div class="font-medium">#{adhesion.nomMembre}</div>
|
|
<div class="text-600 text-sm">#{adhesion.numeroMembre}</div>
|
|
</div>
|
|
</p:column>
|
|
|
|
<p:column headerText="Organisation" sortBy="#{adhesion.nomOrganisation}">
|
|
<h:outputText value="#{adhesion.nomOrganisation}" />
|
|
</p:column>
|
|
|
|
<p:column headerText="Date Demande" sortBy="#{adhesion.dateDemande}" style="width:120px">
|
|
<h:outputText value="#{adhesion.dateDemandeFormatee}" />
|
|
</p:column>
|
|
|
|
<p:column headerText="Frais" sortBy="#{adhesion.fraisAdhesion}" style="width:120px">
|
|
<h:outputText value="#{adhesion.fraisAdhesionFormatte}" styleClass="font-bold" />
|
|
</p:column>
|
|
|
|
<p:column headerText="Actions" style="width:250px">
|
|
<div class="flex gap-1">
|
|
<ui:include src="/templates/components/buttons/button-success.xhtml">
|
|
<ui:param name="value" value="Approuver" />
|
|
<ui:param name="icon" value="pi pi-check" />
|
|
<ui:param name="action" value="#{adhesionsBean.selectionnerAdhesion(adhesion)}" />
|
|
<ui:param name="update" value=":formApprobation" />
|
|
<ui:param name="oncomplete" value="PF('dlgApprobation').show();" />
|
|
<ui:param name="styleClass" value="p-button-sm" />
|
|
</ui:include>
|
|
<p:commandButton value="Rejeter"
|
|
icon="pi pi-times"
|
|
styleClass="p-button-danger p-button-sm"
|
|
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
|
|
update=":formRejet"
|
|
oncomplete="PF('dlgRejet').show();" />
|
|
<p:commandButton icon="pi pi-eye"
|
|
title="Voir les détails"
|
|
styleClass="p-button-rounded p-button-text p-button-info p-button-sm"
|
|
action="#{adhesionsBean.selectionnerAdhesion(adhesion)}"
|
|
update=":formDetailsAdhesion"
|
|
oncomplete="PF('dlgDetailsAdhesion').show();" />
|
|
</div>
|
|
</p:column>
|
|
</p:dataTable>
|
|
</h:form>
|
|
</div>
|
|
|
|
<!-- Dialog Approbation -->
|
|
<p:dialog header="Approuver l'Adhésion" widgetVar="dlgApprobation" modal="true" width="500" resizable="false">
|
|
<h:form id="formApprobation">
|
|
<div class="ui-fluid">
|
|
<div class="field">
|
|
<label class="font-medium">Adhésion</label>
|
|
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
|
|
<p class="text-500 text-sm">Frais: #{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex justify-content-end gap-2 mt-3">
|
|
<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('dlgApprobation').hide();" />
|
|
<ui:param name="outlined" value="true" />
|
|
</ui:include>
|
|
<ui:include src="/templates/components/buttons/button-success.xhtml">
|
|
<ui:param name="value" value="Approuver" />
|
|
<ui:param name="icon" value="pi pi-check" />
|
|
<ui:param name="action" value="#{adhesionsBean.approuverAdhesion}" />
|
|
<ui:param name="update" value="@form :formValidation" />
|
|
<ui:param name="oncomplete" value="PF('dlgApprobation').hide();" />
|
|
</ui:include>
|
|
</div>
|
|
</h:form>
|
|
</p:dialog>
|
|
|
|
<!-- Dialog Rejet -->
|
|
<p:dialog header="Rejeter l'Adhésion" widgetVar="dlgRejet" modal="true" width="500" resizable="false">
|
|
<h:form id="formRejet">
|
|
<div class="ui-fluid">
|
|
<div class="field">
|
|
<label class="font-medium">Adhésion</label>
|
|
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference} - #{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
|
|
</div>
|
|
|
|
<ui:include src="/templates/components/forms/form-field-textarea.xhtml">
|
|
<ui:param name="id" value="motifRejet" />
|
|
<ui:param name="label" value="Motif du rejet" />
|
|
<ui:param name="value" value="#{adhesionsBean.adhesionSelectionnee.motifRejet}" />
|
|
<ui:param name="required" value="true" />
|
|
<ui:param name="rows" value="4" />
|
|
</ui:include>
|
|
</div>
|
|
|
|
<div class="flex justify-content-end gap-2 mt-3">
|
|
<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('dlgRejet').hide();" />
|
|
<ui:param name="outlined" value="true" />
|
|
</ui:include>
|
|
<p:commandButton value="Rejeter"
|
|
icon="pi pi-times"
|
|
styleClass="p-button-danger"
|
|
action="#{adhesionsBean.rejeterAdhesion(adhesionsBean.adhesionSelectionnee.motifRejet)}"
|
|
update="@form :formValidation"
|
|
oncomplete="PF('dlgRejet').hide();" />
|
|
</div>
|
|
</h:form>
|
|
</p:dialog>
|
|
|
|
<!-- Dialog Détails Adhésion -->
|
|
<p:dialog header="Détails de l'Adhésion" widgetVar="dlgDetailsAdhesion" modal="true" width="600" resizable="false">
|
|
<h:form id="formDetailsAdhesion">
|
|
<div class="ui-fluid">
|
|
<div class="grid">
|
|
<div class="col-12 md:col-6">
|
|
<div class="field">
|
|
<label class="font-medium">Référence</label>
|
|
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.numeroReference}</p>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 md:col-6">
|
|
<div class="field">
|
|
<label class="font-medium">Statut</label>
|
|
<p:tag value="#{adhesionsBean.adhesionSelectionnee.statutLibelle}"
|
|
severity="#{adhesionsBean.adhesionSelectionnee.statutSeverity}" />
|
|
</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<div class="field">
|
|
<label class="font-medium">Membre</label>
|
|
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.nomMembre}</p>
|
|
<p class="text-500 text-sm">N° #{adhesionsBean.adhesionSelectionnee.numeroMembre}</p>
|
|
</div>
|
|
</div>
|
|
<div class="col-12">
|
|
<div class="field">
|
|
<label class="font-medium">Organisation</label>
|
|
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.nomOrganisation}</p>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 md:col-6">
|
|
<div class="field">
|
|
<label class="font-medium">Date de demande</label>
|
|
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.dateDemandeFormatee}</p>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 md:col-6">
|
|
<div class="field">
|
|
<label class="font-medium">Frais d'adhésion</label>
|
|
<p class="text-600 font-bold">#{adhesionsBean.adhesionSelectionnee.fraisAdhesionFormatte}</p>
|
|
</div>
|
|
</div>
|
|
<div class="col-12" rendered="#{adhesionsBean.adhesionSelectionnee.observations != null}">
|
|
<div class="field">
|
|
<label class="font-medium">Observations</label>
|
|
<p class="text-600">#{adhesionsBean.adhesionSelectionnee.observations}</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</h:form>
|
|
</p:dialog>
|
|
|
|
</ui:define>
|
|
</ui:composition>
|