fix: Correction des boutons d'action dans organisation/liste.xhtml et corrections diverses

- Alignement des boutons d'action avec membre/liste.xhtml (icônes seulement, style rounded)
- Remplacement findByIdOptional par find[Entity]ById dans tous les repositories
- Correction des erreurs de compilation UUID vs Long
- Correction du test MembreServiceAdvancedSearchTest (suppression assignation roles String)
- Ajout de méthodes find[Entity]ById dans tous les repositories
- Mise à jour des services pour utiliser les nouvelles méthodes de repository
- Correction des appels order() vers Sort.by() dans les repositories
- Suppression des tests obsolètes dans unionflow-server-api
This commit is contained in:
dahoud
2025-11-30 16:18:38 +00:00
parent 950392e63f
commit e92acf44e6
51 changed files with 349 additions and 1687 deletions

View File

@@ -6,6 +6,7 @@
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{cotisationsBean}"/>
<ui:define name="title">Gestion des Cotisations - UnionFlow</ui:define>
<ui:define name="content">

View File

@@ -6,6 +6,7 @@
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{evenementsBean}"/>
<ui:define name="title">Bilan des Événements - UnionFlow</ui:define>
<ui:define name="content">

View File

@@ -6,6 +6,7 @@
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{evenementsBean}"/>
<ui:define name="title">Création d'Événement - UnionFlow</ui:define>
<ui:define name="content">
@@ -61,7 +62,7 @@
<ui:param name="label" value="Type d'événement *" />
<ui:param name="value" value="#{evenementsBean.nouvelEvenement.typeEvenement}" />
<ui:param name="required" value="true" />
<ui:define name="items">
<ui:param name="items">
<f:selectItem itemLabel="Sélectionner un type" itemValue="" />
<f:selectItem itemLabel="Assemblée Générale" itemValue="ASSEMBLEE_GENERALE" />
<f:selectItem itemLabel="Formation" itemValue="FORMATION" />
@@ -72,7 +73,7 @@
<f:selectItem itemLabel="Atelier" itemValue="ATELIER" />
<f:selectItem itemLabel="Cérémonie" itemValue="CEREMONIE" />
<f:selectItem itemLabel="Autre" itemValue="AUTRE" />
</ui:define>
</ui:param>
</ui:include>
</div>
@@ -81,12 +82,12 @@
<ui:param name="id" value="priorite" />
<ui:param name="label" value="Priorité" />
<ui:param name="value" value="#{evenementsBean.nouvelEvenement.priorite}" />
<ui:define name="items">
<ui:param name="items">
<f:selectItem itemLabel="Normale" itemValue="NORMALE" />
<f:selectItem itemLabel="Haute" itemValue="HAUTE" />
<f:selectItem itemLabel="Critique" itemValue="CRITIQUE" />
<f:selectItem itemLabel="Basse" itemValue="BASSE" />
</ui:define>
</ui:param>
</ui:include>
</div>
</div>

View File

@@ -6,6 +6,7 @@
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{evenementsBean}"/>
<ui:define name="title">Gestion des Événements - UnionFlow</ui:define>
<ui:define name="content">
@@ -283,7 +284,7 @@
<ui:param name="label" value="Type d'événement *" />
<ui:param name="value" value="#{evenementsBean.nouvelEvenement.typeEvenement}" />
<ui:param name="required" value="true" />
<ui:define name="items">
<ui:param name="items">
<f:selectItem itemLabel="Assemblée Générale" itemValue="ASSEMBLEE_GENERALE" />
<f:selectItem itemLabel="Formation" itemValue="FORMATION" />
<f:selectItem itemLabel="Activité Sociale" itemValue="ACTIVITE_SOCIALE" />
@@ -293,7 +294,7 @@
<f:selectItem itemLabel="Atelier" itemValue="ATELIER" />
<f:selectItem itemLabel="Cérémonie" itemValue="CEREMONIE" />
<f:selectItem itemLabel="Autre" itemValue="AUTRE" />
</ui:define>
</ui:param>
</ui:include>
</div>
@@ -302,12 +303,12 @@
<ui:param name="id" value="priorite" />
<ui:param name="label" value="Priorité" />
<ui:param name="value" value="#{evenementsBean.nouvelEvenement.priorite}" />
<ui:define name="items">
<ui:param name="items">
<f:selectItem itemLabel="Critique" itemValue="CRITIQUE" />
<f:selectItem itemLabel="Haute" itemValue="HAUTE" />
<f:selectItem itemLabel="Normale" itemValue="NORMALE" />
<f:selectItem itemLabel="Basse" itemValue="BASSE" />
</ui:define>
</ui:param>
</ui:include>
</div>
@@ -485,14 +486,14 @@
<ui:param name="id" value="statutModif" />
<ui:param name="label" value="Statut" />
<ui:param name="value" value="#{evenementsBean.evenementSelectionne.statut}" />
<ui:define name="items">
<ui:param name="items">
<f:selectItem itemLabel="Planifié" itemValue="PLANIFIE" />
<f:selectItem itemLabel="Confirmé" itemValue="CONFIRME" />
<f:selectItem itemLabel="En cours" itemValue="EN_COURS" />
<f:selectItem itemLabel="Terminé" itemValue="TERMINE" />
<f:selectItem itemLabel="Annulé" itemValue="ANNULE" />
<f:selectItem itemLabel="Reporté" itemValue="REPORTE" />
</ui:define>
</ui:param>
</ui:include>
</div>

View File

@@ -6,6 +6,7 @@
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{evenementsBean}"/>
<ui:define name="title">Logistique des Événements - UnionFlow</ui:define>
<ui:define name="content">

View File

@@ -6,6 +6,7 @@
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{evenementsBean}"/>
<ui:define name="title">Planification des Événements - UnionFlow</ui:define>
<ui:define name="content">

View File

@@ -6,6 +6,7 @@
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{evenementsBean}"/>
<ui:define name="title">Réservations d'Événements - UnionFlow</ui:define>
<ui:define name="content">

View File

@@ -6,6 +6,7 @@
xmlns:p="http://primefaces.org/ui"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{membreInscriptionBean}"/>
<ui:define name="title">Inscription Membre - UnionFlow</ui:define>
<ui:define name="content">

View File

@@ -7,6 +7,7 @@
xmlns:uf="http://xmlns.jcp.org/jsf/composite/components"
template="/templates/main-template.xhtml">
<ui:param name="page" value="#{membreListeBean}"/>
<ui:define name="title">Liste des Membres - UnionFlow</ui:define>
<ui:define name="content">

View File

@@ -6,6 +6,7 @@
xmlns:p="http://primefaces.org/ui">
<ui:composition template="/templates/main-template.xhtml">
<ui:param name="page" value="#{organisationDetailBean}"/>
<ui:define name="title">Détail de l'Organisation</ui:define>
<ui:define name="content">

View File

@@ -7,6 +7,7 @@
xmlns:uf="http://xmlns.jcp.org/jsf/composite/components">
<ui:composition template="/templates/main-template.xhtml">
<ui:param name="page" value="#{organisationsBean}"/>
<ui:define name="title">Gestion des Organisations</ui:define>
<ui:define name="content">
@@ -167,29 +168,40 @@
</p:column>
<!-- Actions (DRY/WOU: Composite Components) -->
<p:column headerText="Actions" style="width: 320px;">
<!-- DRY/WOU: Composite Component action-button-view -->
<uf:action-button-view itemId="#{org.id}"
detailPage="/pages/secure/organisation/detail.xhtml"
styleClass="mr-2"/>
<!-- DRY/WOU: Composite Component action-button-edit -->
<uf:action-button-edit actionListener="#{organisationsBean.setOrganisationSelectionnee(org)}"
update=":formModifier"
dialogWidget="dlgModifier"
styleClass="mr-2"/>
<!-- DRY/WOU: Composite Component action-button-toggle -->
<uf:action-button-toggle actionListener="#{organisationsBean.basculerStatutOrganisation(org)}"
update=":formOrganisations:dtOrganisations :formOrganisations:messages"
isActive="#{org.statut == organisationsBean.statutActive}"
confirmMessage="Êtes-vous sûr de vouloir changer le statut de cette organisation ?"
styleClass="mr-2"/>
<!-- DRY/WOU: Composite Component action-button-delete -->
<uf:action-button-delete actionListener="#{organisationsBean.supprimerOrganisation(org)}"
update=":formOrganisations:dtOrganisations :formOrganisations:messages"
confirmMessage="Êtes-vous sûr de vouloir supprimer cette organisation ? Cette action est irréversible."/>
<p:column headerText="Actions" style="width:200px">
<div class="flex gap-1">
<!-- DRY/WOU: Composite Component action-button-view -->
<uf:action-button-view itemId="#{org.id.toString()}"
detailPage="/pages/secure/organisation/detail.xhtml"
iconOnly="true"/>
<!-- DRY/WOU: button-icon pour Modifier -->
<p:commandButton icon="pi pi-pencil"
actionListener="#{organisationsBean.setOrganisationSelectionnee(org)}"
oncomplete="PF('dlgModifier').show();"
update=":formModifier"
styleClass="ui-button-rounded ui-button-warning"
title="Modifier"/>
<!-- DRY/WOU: button-icon pour Activer/Désactiver -->
<p:commandButton icon="#{org.statut == organisationsBean.statutActive ? 'pi pi-ban' : 'pi pi-check'}"
actionListener="#{organisationsBean.basculerStatutOrganisation(org)}"
update=":formOrganisations:dtOrganisations :formOrganisations:messages"
styleClass="ui-button-rounded #{org.statut == organisationsBean.statutActive ? 'ui-button-secondary' : 'ui-button-success'}"
title="#{org.statut == organisationsBean.statutActive ? 'Désactiver' : 'Activer'}">
<p:confirm header="Confirmation"
message="Êtes-vous sûr de vouloir changer le statut de cette organisation ?"
icon="pi pi-exclamation-triangle"/>
</p:commandButton>
<!-- DRY/WOU: button-icon pour Supprimer -->
<p:commandButton icon="pi pi-trash"
actionListener="#{organisationsBean.supprimerOrganisation(org)}"
update=":formOrganisations:dtOrganisations :formOrganisations:messages"
styleClass="ui-button-rounded ui-button-danger"
title="Supprimer">
<p:confirm header="Confirmation"
message="Êtes-vous sûr de vouloir supprimer cette organisation ? Cette action est irréversible."
icon="pi pi-exclamation-triangle"/>
</p:commandButton>
</div>
</p:column>
</p:dataTable>
</ui:define>
@@ -227,12 +239,10 @@
<ui:decorate template="/templates/components/buttons/button-form-submit.xhtml">
<ui:param name="value" value="Enregistrer" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{organisationsBean.modifierOrganisation}" />
<ui:param name="update" value=":formOrganisations:dtOrganisations :formOrganisations:messages" />
<ui:param name="oncomplete" value="if(!args.validationFailed) PF('dlgModifier').hide();" />
<ui:param name="severity" value="success" />
<ui:define name="action">
#{organisationsBean.modifierOrganisation}
</ui:define>
</ui:decorate>
</ui:define>
</ui:decorate>

View File

@@ -6,6 +6,7 @@
xmlns:p="http://primefaces.org/ui">
<ui:composition template="/templates/main-template.xhtml">
<ui:param name="page" value="#{organisationsBean}"/>
<ui:define name="title">Nouvelle Organisation</ui:define>
<ui:define name="content">

View File

@@ -0,0 +1,33 @@
<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">
<!--
Composant bouton de soumission de formulaire réutilisable (WOU/DRY)
Usage: <ui:decorate template="/templates/components/buttons/button-form-submit.xhtml">
<ui:param name="value" value="Enregistrer" />
<ui:param name="icon" value="pi pi-check" />
<ui:param name="action" value="#{bean.method}" />
<ui:param name="update" value="componentId" />
<ui:param name="oncomplete" value="javascript" />
<ui:param name="severity" value="success|primary|info|warning|danger" />
<ui:param name="disabled" value="false" />
<ui:param name="styleClass" value="" />
</ui:decorate>
-->
<ui:fragment rendered="#{empty rendered or rendered}">
<p:commandButton
value="#{value}"
icon="#{icon}"
action="#{action}"
update="#{update}"
oncomplete="#{oncomplete}"
disabled="#{not empty disabled and disabled}"
styleClass="ui-button-#{empty severity ? 'primary' : severity} #{not empty styleClass ? styleClass : ''}"
title="#{title}" />
</ui:fragment>
</ui:composition>

View File

@@ -26,19 +26,15 @@
disabled="#{not empty readonly and readonly}"
styleClass="w-full">
<f:selectItem itemLabel="Sélectionner..." itemValue="" noSelectionOption="true" rendered="#{not empty required and required}" />
<!-- Support pour ui:define name="items" avec f:selectItem directement -->
<ui:insert name="items">
<!-- Si pas de ui:define, utiliser items via ui:param -->
<ui:fragment rendered="#{not empty var and not empty itemLabel and not empty itemValue}">
<f:selectItems value="#{items}"
var="#{var}"
itemLabel="#{itemLabel}"
itemValue="#{itemValue}" />
</ui:fragment>
<ui:fragment rendered="#{empty var and not empty items}">
<f:selectItems value="#{items}" />
</ui:fragment>
</ui:insert>
<ui:fragment rendered="#{not empty var and not empty itemLabel and not empty itemValue}">
<f:selectItems value="#{items}"
var="#{var}"
itemLabel="#{itemLabel}"
itemValue="#{itemValue}" />
</ui:fragment>
<ui:fragment rendered="#{empty var}">
<f:selectItems value="#{items}" />
</ui:fragment>
</p:selectOneMenu>
</div>
</ui:composition>