Configure Maven repository for unionflow-server-api dependency

This commit is contained in:
dahoud
2025-12-10 01:12:54 +00:00
commit 2910809949
1173 changed files with 435718 additions and 0 deletions

View File

@@ -0,0 +1,174 @@
<ui:fragment 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">
<!--
Fragment de formulaire réutilisable pour les membres (DRY/WOU)
Utilisé pour création et modification
Paramètres:
- model : MembreDTO à éditer
- organisationsItems : Liste des organisations pour le dropdown
-->
<div class="ui-fluid">
<div class="formgrid grid">
<!-- Bloc Identité -->
<div class="col-12">
<div class="card p-fluid mb-3">
<h5 class="mb-3">Identité</h5>
<div class="grid formgrid">
<div class="field col-12 md:col-6">
<p:outputLabel for="nom" value="Nom *" />
<p:inputText id="nom" value="#{model.nom}" required="true" requiredMessage="Nom: une donnée est requise." maxlength="50" />
<p:message for="nom" />
</div>
<div class="field col-12 md:col-6">
<p:outputLabel for="prenom" value="Prénom *" />
<p:inputText id="prenom" value="#{model.prenom}" required="true" requiredMessage="Prénom: une donnée est requise." maxlength="50" />
<p:message for="prenom" />
</div>
<div class="field col-12 md:col-6">
<p:outputLabel for="dateNaissance" value="Date de naissance" />
<p:datePicker id="dateNaissance" value="#{model.dateNaissance}" pattern="yyyy-MM-dd" showIcon="true" />
</div>
<div class="field col-12 md:col-6">
<p:outputLabel for="nationalite" value="Nationalité" />
<p:inputText id="nationalite" value="#{model.nationalite}" maxlength="50" />
</div>
</div>
</div>
</div>
<!-- Bloc Contact -->
<div class="col-12">
<div class="card p-fluid mb-3">
<h5 class="mb-3">Contact</h5>
<div class="grid formgrid">
<div class="field col-12 md:col-6">
<p:outputLabel for="email" value="Email *" />
<p:inputText id="email" value="#{model.email}" required="true" requiredMessage="Email: une donnée est requise." maxlength="100" />
<p:message for="email" />
</div>
<div class="field col-12 md:col-6">
<p:outputLabel for="telephone" value="Téléphone" />
<p:inputText id="telephone" value="#{model.telephone}" maxlength="20" />
</div>
</div>
</div>
</div>
<!-- Bloc Localisation -->
<div class="col-12">
<div class="card p-fluid mb-3">
<h5 class="mb-3">Localisation</h5>
<div class="grid formgrid">
<div class="field col-12">
<p:outputLabel for="adresse" value="Adresse" />
<p:inputTextarea id="adresse" value="#{model.adresse}" rows="2" maxlength="200" />
</div>
<div class="field col-12 md:col-4">
<p:outputLabel for="ville" value="Ville" />
<p:inputText id="ville" value="#{model.ville}" maxlength="50" />
</div>
<div class="field col-12 md:col-4">
<p:outputLabel for="region" value="Région" />
<p:inputText id="region" value="#{model.region}" maxlength="50" />
</div>
<div class="field col-12 md:col-4">
<p:outputLabel for="quartier" value="Quartier" />
<p:inputText id="quartier" value="#{model.quartier}" maxlength="50" />
</div>
</div>
</div>
</div>
<!-- Bloc Professionnel -->
<div class="col-12">
<div class="card p-fluid mb-3">
<h5 class="mb-3">Informations professionnelles</h5>
<div class="grid formgrid">
<div class="field col-12 md:col-6">
<p:outputLabel for="profession" value="Profession" />
<p:inputText id="profession" value="#{model.profession}" maxlength="100" />
</div>
<div class="field col-12 md:col-6">
<p:outputLabel for="statutMatrimonial" value="Statut matrimonial" />
<p:inputText id="statutMatrimonial" value="#{model.statutMatrimonial}" maxlength="20" />
</div>
</div>
</div>
</div>
<!-- Bloc Identité administrative -->
<div class="col-12">
<div class="card p-fluid mb-3">
<h5 class="mb-3">Pièce d'identité</h5>
<div class="grid formgrid">
<div class="field col-12 md:col-6">
<p:outputLabel for="typeIdentite" value="Type de pièce" />
<p:selectOneMenu id="typeIdentite" value="#{model.typeIdentite}">
<f:selectItem itemLabel="Sélectionner..." itemValue="" />
<f:selectItem itemLabel="Carte Nationale d'Identité" itemValue="CNI" />
<f:selectItem itemLabel="Passeport" itemValue="PASSEPORT" />
<f:selectItem itemLabel="Permis de conduire" itemValue="PERMIS" />
<f:selectItem itemLabel="Autre" itemValue="AUTRE" />
</p:selectOneMenu>
</div>
<div class="field col-12 md:col-6">
<p:outputLabel for="numeroIdentite" value="Numéro de pièce" />
<p:inputText id="numeroIdentite" value="#{model.numeroIdentite}" maxlength="50" />
</div>
</div>
</div>
</div>
<!-- Bloc Organisation -->
<div class="col-12">
<div class="card p-fluid mb-3">
<h5 class="mb-3">Organisation &amp; Rôle</h5>
<div class="grid formgrid">
<div class="field col-12 md:col-6">
<p:outputLabel for="association" value="Organisation *" />
<p:selectOneMenu id="association" value="#{model.associationId}" required="true" requiredMessage="Organisation: une donnée est requise.">
<f:selectItems value="#{organisationsItems}" />
</p:selectOneMenu>
<p:message for="association" />
</div>
<div class="field col-12 md:col-6">
<p:outputLabel for="role" value="Rôle" />
<p:inputText id="role" value="#{model.role}" maxlength="50" />
</div>
<div class="field col-12 md:col-4">
<p:selectBooleanCheckbox id="membreBureau" value="#{model.membreBureau}" />
<p:outputLabel for="membreBureau" value="Membre du bureau" style="margin-left: 0.5rem;" />
</div>
<div class="field col-12 md:col-4">
<p:selectBooleanCheckbox id="responsable" value="#{model.responsable}" />
<p:outputLabel for="responsable" value="Responsable" style="margin-left: 0.5rem;" />
</div>
</div>
</div>
</div>
<!-- Bloc Photo -->
<div class="col-12">
<div class="card p-fluid mb-3">
<h5 class="mb-3">Photo de profil</h5>
<div class="grid formgrid">
<div class="field col-12">
<p:outputLabel for="photoUrl" value="URL de la photo" />
<p:inputText id="photoUrl" value="#{model.photoUrl}" maxlength="255" placeholder="https://..." />
<small class="text-600">Entrez l'URL d'une photo ou laissez vide pour utiliser l'avatar par défaut</small>
</div>
</div>
</div>
</div>
</div>
</div>
</ui:fragment>

View File

@@ -0,0 +1,456 @@
<ui:fragment 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">
<!--
Fragment réutilisable pour le formulaire d'Organisation
Paramètres attendus via <ui:param>:
- model: l'objet cible (ex: #{organisationsBean.nouvelleOrganisation})
- typesItems: la liste des SelectItem pour les types
-->
<div class="ui-fluid">
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 1 : INFORMATIONS GÉNÉRALES -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<p:fieldset legend="Informations générales" toggleable="true" collapsed="false" styleClass="mb-3">
<div class="formgrid grid">
<!-- Nom complet -->
<div class="field col-12 md:col-8">
<p:outputLabel for="nom" value="Nom complet *" styleClass="font-semibold" />
<p:inputText id="nom"
value="#{model.nom}"
required="true"
requiredMessage="Le nom de l'organisation est requis."
maxlength="200"
placeholder="Ex: Association pour le développement durable" />
<p:message for="nom" />
</div>
<!-- Nom court / Sigle -->
<div class="field col-12 md:col-4">
<p:outputLabel for="nomCourt" value="Nom court / Sigle" styleClass="font-semibold" />
<p:inputText id="nomCourt"
value="#{model.nomCourt}"
maxlength="100"
placeholder="Ex: ADD" />
</div>
<!-- Type d'organisation -->
<div class="field col-12 md:col-6">
<p:outputLabel for="type" value="Type d'organisation *" styleClass="font-semibold" />
<p:selectOneMenu id="type"
value="#{model.typeAssociation}"
required="true"
requiredMessage="Le type d'organisation est requis.">
<f:selectItem itemLabel="-- Sélectionnez un type --" itemValue="#{null}" noSelectionOption="true" />
<f:selectItems value="#{typesItems}" />
</p:selectOneMenu>
<p:message for="type" />
</div>
<!-- Date de fondation -->
<div class="field col-12 md:col-3">
<p:outputLabel for="dateFondation" value="Date de fondation" styleClass="font-semibold" />
<p:datePicker id="dateFondation"
value="#{model.dateFondation}"
pattern="dd/MM/yyyy"
showIcon="true"
yearNavigator="true"
yearRange="1900:2025"
placeholder="jj/mm/aaaa" />
</div>
<!-- Numéro d'enregistrement -->
<div class="field col-12 md:col-3">
<p:outputLabel for="numEnreg" value="N° d'enregistrement" styleClass="font-semibold" />
<p:inputText id="numEnreg"
value="#{model.numeroRegistre}"
maxlength="100"
placeholder="Ex: RNA-W123456789" />
</div>
<!-- Description -->
<div class="field col-12">
<p:outputLabel for="description" value="Description" styleClass="font-semibold" />
<p:inputTextarea id="description"
value="#{model.description}"
rows="4"
maxlength="2000"
placeholder="Décrivez brièvement l'organisation..."
autoResize="false" />
<small class="text-muted">#{2000 - (empty model.description ? 0 : model.description.length())} caractères restants</small>
</div>
</div>
</p:fieldset>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 2 : COORDONNÉES -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<p:fieldset legend="Coordonnées" toggleable="true" collapsed="false" styleClass="mb-3">
<div class="formgrid grid">
<!-- Email principal -->
<div class="field col-12 md:col-6">
<p:outputLabel for="email" value="Email principal" styleClass="font-semibold" />
<p:inputText id="email"
value="#{model.email}"
maxlength="200"
type="email"
placeholder="contact@exemple.com" />
<p:message for="email" />
</div>
<!-- Email secondaire -->
<div class="field col-12 md:col-6">
<p:outputLabel for="email2" value="Email secondaire" styleClass="font-semibold" />
<p:inputText id="email2"
value="#{model.emailSecondaire}"
maxlength="200"
type="email"
placeholder="admin@exemple.com" />
<p:message for="email2" />
</div>
<!-- Téléphone principal -->
<div class="field col-12 md:col-6">
<p:outputLabel for="telephone" value="Téléphone principal" styleClass="font-semibold" />
<p:inputText id="telephone"
value="#{model.telephone}"
maxlength="20"
placeholder="+225 XX XX XX XX XX" />
</div>
<!-- Téléphone secondaire -->
<div class="field col-12 md:col-6">
<p:outputLabel for="telephone2" value="Téléphone secondaire" styleClass="font-semibold" />
<p:inputText id="telephone2"
value="#{model.telephoneSecondaire}"
maxlength="20"
placeholder="+225 XX XX XX XX XX" />
</div>
<!-- Site web -->
<div class="field col-12 md:col-6">
<p:outputLabel for="siteWeb" value="Site web" styleClass="font-semibold" />
<p:inputText id="siteWeb"
value="#{model.siteWeb}"
maxlength="500"
placeholder="https://www.exemple.com" />
</div>
<!-- Logo URL -->
<div class="field col-12 md:col-6">
<p:outputLabel for="logo" value="Logo (URL)" styleClass="font-semibold" />
<p:inputText id="logo"
value="#{model.logo}"
maxlength="500"
placeholder="https://www.exemple.com/logo.png" />
</div>
<!-- Réseaux sociaux -->
<div class="field col-12">
<p:outputLabel for="reseauxSociaux" value="Réseaux sociaux" styleClass="font-semibold" />
<p:inputTextarea id="reseauxSociaux"
value="#{model.reseauxSociaux}"
rows="3"
maxlength="1000"
placeholder='Ex: {"facebook":"@pageOfficielle", "twitter":"@compte", "linkedin":"entreprise/nom"}'
autoResize="false" />
<small class="text-muted">Format JSON recommandé</small>
</div>
</div>
</p:fieldset>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 3 : LOCALISATION -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<p:fieldset legend="Localisation" toggleable="true" collapsed="false" styleClass="mb-3">
<div class="formgrid grid">
<!-- Adresse complète -->
<div class="field col-12">
<p:outputLabel for="adresse" value="Adresse complète" styleClass="font-semibold" />
<p:inputTextarea id="adresse"
value="#{model.adresse}"
rows="2"
maxlength="500"
placeholder="N° rue, quartier..."
autoResize="false" />
</div>
<!-- Ville -->
<div class="field col-12 md:col-4">
<p:outputLabel for="ville" value="Ville" styleClass="font-semibold" />
<p:inputText id="ville"
value="#{model.ville}"
maxlength="100"
placeholder="Ex: Abidjan" />
</div>
<!-- Code postal -->
<div class="field col-12 md:col-2">
<p:outputLabel for="codePostal" value="Code postal" styleClass="font-semibold" />
<p:inputText id="codePostal"
value="#{model.codePostal}"
maxlength="10"
placeholder="Ex: 01 BP 123" />
</div>
<!-- Région -->
<div class="field col-12 md:col-3">
<p:outputLabel for="region" value="Région" styleClass="font-semibold" />
<p:inputText id="region"
value="#{model.region}"
maxlength="100"
placeholder="Ex: Lagunes" />
</div>
<!-- Pays -->
<div class="field col-12 md:col-3">
<p:outputLabel for="pays" value="Pays" styleClass="font-semibold" />
<p:inputText id="pays"
value="#{model.pays}"
maxlength="100"
placeholder="Ex: Côte d'Ivoire" />
</div>
<!-- Coordonnées GPS -->
<div class="field col-12">
<p:outputLabel value="Coordonnées GPS" styleClass="font-semibold" />
</div>
<div class="field col-12 md:col-6">
<p:outputLabel for="latitude" value="Latitude" />
<p:inputNumber id="latitude"
value="#{model.latitude}"
decimalPlaces="6"
minValue="-90"
maxValue="90"
placeholder="Ex: 5.316667" />
<small class="text-muted">Valeur entre -90 et 90</small>
</div>
<div class="field col-12 md:col-6">
<p:outputLabel for="longitude" value="Longitude" />
<p:inputNumber id="longitude"
value="#{model.longitude}"
decimalPlaces="6"
minValue="-180"
maxValue="180"
placeholder="Ex: -4.033333" />
<small class="text-muted">Valeur entre -180 et 180</small>
</div>
</div>
</p:fieldset>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 4 : STRUCTURE & HIÉRARCHIE -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<p:fieldset legend="Structure &amp; Hiérarchie" toggleable="true" collapsed="true" styleClass="mb-3">
<div class="formgrid grid">
<!-- Statut juridique -->
<div class="field col-12">
<p:outputLabel value="Statut juridique" styleClass="font-semibold block mb-3" />
</div>
<div class="field col-12 md:col-4">
<div class="field-checkbox">
<p:selectBooleanCheckbox id="publique" value="#{model.organisationPublique}" />
<p:outputLabel for="publique" value="Organisation publique" styleClass="ml-2" />
</div>
<small class="text-muted block mt-1">Institution étatique ou gouvernementale</small>
</div>
<div class="field col-12 md:col-4">
<div class="field-checkbox">
<p:selectBooleanCheckbox id="accepteMembres" value="#{model.accepteNouveauxMembres}" />
<p:outputLabel for="accepteMembres" value="Recrutement ouvert" styleClass="ml-2" />
</div>
<small class="text-muted block mt-1">Accepte de nouveaux membres</small>
</div>
<div class="field col-12 md:col-4">
<div class="field-checkbox">
<p:selectBooleanCheckbox id="cotisationObl" value="#{model.cotisationObligatoire}" />
<p:outputLabel for="cotisationObl" value="Cotisation obligatoire" styleClass="ml-2" />
</div>
<small class="text-muted block mt-1">Adhésion payante requise</small>
</div>
<!-- Séparateur visuel -->
<div class="field col-12">
<p:divider />
<p:outputLabel value="Rattachement hiérarchique" styleClass="font-semibold block mb-3" />
</div>
<!-- Organisation parente -->
<div class="field col-12 md:col-9">
<p:outputLabel for="orgParente" value="Organisation parente" styleClass="font-semibold" />
<p:inputText id="orgParente"
value="#{model.organisationParenteId}"
maxlength="36"
placeholder="Sélectionner ou saisir l'identifiant de l'organisation mère" />
<small class="text-muted">Laisser vide si l'organisation est indépendante ou au sommet de la hiérarchie</small>
</div>
<!-- Niveau hiérarchique -->
<div class="field col-12 md:col-3">
<p:outputLabel for="niveau" value="Niveau" styleClass="font-semibold" />
<p:inputNumber id="niveau"
value="#{model.niveauHierarchique}"
decimalPlaces="0"
minValue="0"
maxValue="10"
placeholder="0" />
<small class="text-muted">0 = Niveau national/racine<br/>1 = Niveau régional<br/>2+ = Niveaux locaux</small>
</div>
</div>
</p:fieldset>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 5 : MEMBRES & GOUVERNANCE -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<p:fieldset legend="Membres &amp; Gouvernance" toggleable="true" collapsed="true" styleClass="mb-3">
<div class="formgrid grid">
<!-- Nombre de membres -->
<div class="field col-12 md:col-6">
<p:outputLabel for="nbMembres" value="Nombre de membres" styleClass="font-semibold" />
<p:inputNumber id="nbMembres"
value="#{model.nombreMembres}"
decimalPlaces="0"
minValue="0"
placeholder="0" />
</div>
<!-- Nombre d'administrateurs -->
<div class="field col-12 md:col-6">
<p:outputLabel for="nbAdmins" value="Nombre d'administrateurs" styleClass="font-semibold" />
<p:inputNumber id="nbAdmins"
value="#{model.nombreAdministrateurs}"
decimalPlaces="0"
minValue="0"
placeholder="0" />
</div>
</div>
</p:fieldset>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 6 : BUDGET & FINANCES -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<p:fieldset legend="Budget &amp; Finances" toggleable="true" collapsed="true" styleClass="mb-3">
<div class="formgrid grid">
<!-- Budget annuel -->
<div class="field col-12 md:col-5">
<p:outputLabel for="budget" value="Budget annuel" styleClass="font-semibold" />
<p:inputNumber id="budget"
value="#{model.budgetAnnuel}"
decimalPlaces="2"
minValue="0"
placeholder="0.00" />
</div>
<!-- Devise -->
<div class="field col-12 md:col-2">
<p:outputLabel for="devise" value="Devise" styleClass="font-semibold" />
<p:inputText id="devise"
value="#{model.devise}"
maxlength="3"
placeholder="XOF"
style="text-transform: uppercase;" />
<small class="text-muted">Code ISO (ex: XOF, EUR)</small>
</div>
<!-- Montant cotisation -->
<div class="field col-12 md:col-5">
<p:outputLabel for="montantCotisation" value="Cotisation annuelle" styleClass="font-semibold" />
<p:inputNumber id="montantCotisation"
value="#{model.montantCotisationAnnuelle}"
decimalPlaces="2"
minValue="0"
placeholder="0.00" />
</div>
</div>
</p:fieldset>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 7 : MISSION & ACTIVITÉS -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<p:fieldset legend="Mission &amp; Activités" toggleable="true" collapsed="true" styleClass="mb-3">
<div class="formgrid grid">
<!-- Objectifs -->
<div class="field col-12">
<p:outputLabel for="objectifs" value="Objectifs stratégiques" styleClass="font-semibold" />
<p:inputTextarea id="objectifs"
value="#{model.objectifs}"
rows="4"
maxlength="2000"
placeholder="Décrivez les objectifs principaux de l'organisation..."
autoResize="false" />
<small class="text-muted">#{2000 - (empty model.objectifs ? 0 : model.objectifs.length())} caractères restants</small>
</div>
<!-- Activités principales -->
<div class="field col-12">
<p:outputLabel for="activites" value="Activités principales" styleClass="font-semibold" />
<p:inputTextarea id="activites"
value="#{model.activitesPrincipales}"
rows="4"
maxlength="2000"
placeholder="Décrivez les activités et programmes mis en œuvre..."
autoResize="false" />
<small class="text-muted">#{2000 - (empty model.activitesPrincipales ? 0 : model.activitesPrincipales.length())} caractères restants</small>
</div>
</div>
</p:fieldset>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 8 : PARTENARIATS & CERTIFICATIONS -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<p:fieldset legend="Partenariats &amp; Certifications" toggleable="true" collapsed="true" styleClass="mb-3">
<div class="formgrid grid">
<!-- Certifications / Labels -->
<div class="field col-12 md:col-6">
<p:outputLabel for="certifications" value="Certifications / Labels" styleClass="font-semibold" />
<p:inputTextarea id="certifications"
value="#{model.certifications}"
rows="3"
maxlength="500"
placeholder="Ex: ISO 9001, Label RSE..."
autoResize="false" />
</div>
<!-- Partenaires principaux -->
<div class="field col-12 md:col-6">
<p:outputLabel for="partenaires" value="Partenaires principaux" styleClass="font-semibold" />
<p:inputTextarea id="partenaires"
value="#{model.partenaires}"
rows="3"
maxlength="1000"
placeholder="Liste des partenaires stratégiques..."
autoResize="false" />
</div>
</div>
</p:fieldset>
<!-- ═══════════════════════════════════════════════════════════════ -->
<!-- SECTION 9 : NOTES ADMINISTRATIVES -->
<!-- ═══════════════════════════════════════════════════════════════ -->
<p:fieldset legend="Notes administratives" toggleable="true" collapsed="true" styleClass="mb-3">
<div class="formgrid grid">
<div class="field col-12">
<p:outputLabel for="notes" value="Notes internes" styleClass="font-semibold" />
<p:inputTextarea id="notes"
value="#{model.notes}"
rows="4"
maxlength="1000"
placeholder="Notes réservées à l'usage administratif interne..."
autoResize="false" />
<small class="text-muted">Ces notes ne sont visibles que par les administrateurs</small>
</div>
</div>
</p:fieldset>
</div>
</ui:fragment>