Commit Graph

68 Commits

Author SHA1 Message Date
dahoud
5ba5a3577c feat: PHASE 4.3 - Service ComptabiliteService
Service créé:
- ComptabiliteService: CRUD complet pour comptes, journaux, écritures
- Validation équilibre écritures (Débit = Crédit)
- Calcul automatique des totaux
- Conversions DTO ↔ Entity complètes
- Gestion des relations (Journal, Organisation, Paiement)

Fonctionnalités:
- Création compte comptable avec validation unicité
- Création journal comptable avec validation unicité
- Création écriture avec validation équilibre
- Liste par journal, organisation
- Conversions bidirectionnelles complètes

Respect strict DRY/WOU:
- Patterns de service cohérents
- Gestion d'erreurs standardisée
- Validation métier intégrée
2025-11-30 11:22:00 +00:00
dahoud
1eaf0f9161 feat: PHASE 4.2 - DTOs Comptables
DTOs créés:
- CompteComptableDTO: Validation complète avec contraintes
- JournalComptableDTO: Gestion périodes et statuts
- EcritureComptableDTO: Avec liste de lignes
- LigneEcritureDTO: Validation débit/crédit

Respect strict DRY/WOU:
- Patterns de DTO cohérents avec autres modules
- Validation complète avec messages d'erreur
- Relations via UUID pour découplage
2025-11-30 11:20:29 +00:00
dahoud
ced33a116e feat: PHASE 4.1 - Entités et Repositories Comptables
Entités créées:
- CompteComptable: Plan comptable avec types, classes, soldes
- JournalComptable: Journaux (ACHATS, VENTES, BANQUE, CAISSE, OD)
- EcritureComptable: Écritures avec équilibre Débit=Crédit
- LigneEcriture: Lignes d'écriture avec validation

Enums créés (module API):
- TypeCompteComptable: ACTIF, PASSIF, CHARGES, PRODUITS, TRESORERIE, AUTRE
- TypeJournalComptable: ACHATS, VENTES, BANQUE, CAISSE, OD

Repositories créés:
- CompteComptableRepository: Recherche par numéro, type, classe
- JournalComptableRepository: Recherche par code, type, période
- EcritureComptableRepository: Recherche par journal, organisation, paiement, période
- LigneEcritureRepository: Recherche par écriture, compte

Fonctionnalités:
- Validation équilibre écritures (Débit = Crédit)
- Calcul automatique des totaux
- Génération automatique numéros de pièce
- Relations avec Organisation et Paiement
2025-11-30 11:16:24 +00:00
dahoud
a62f401ab8 docs: Mise à jour plan d'implémentation - Phases 1, 2 et 3 complétées
Phases complétées:
- PHASE 1: Adresses et Rôles/Permissions (100%)
- PHASE 2: Système de Paiements Centralisé (100%)
- PHASE 3: Intégration Wave Mobile Money (structure complète, API à intégrer)

Prochaines étapes:
- PHASE 2.3: Refactoring Cotisation/Adhesion
- PHASE 4: Système Comptable
- PHASE 5: Gestion Documentaire
- PHASE 6: Système de Notifications
2025-11-30 02:33:52 +00:00
dahoud
5a7ead81f7 feat: DTOs, Services et Resources REST pour Paiements et Wave
DTOs créés:
- PaiementDTO avec validation complète
- CompteWaveDTO avec validation format téléphone
- TransactionWaveDTO avec tous les champs nécessaires

Services créés:
- PaiementService: CRUD complet, validation, annulation, calculs
- WaveService: Gestion comptes Wave, transactions, vérification

Resources REST créées:
- PaiementResource: Endpoints CRUD, validation, annulation, recherche
- WaveResource: Endpoints comptes et transactions Wave

Respect strict DRY/WOU:
- Patterns de service cohérents avec MembreService
- Patterns de resource cohérents avec OrganisationResource
- Gestion d'erreurs standardisée
- Validation complète des DTOs
2025-11-30 02:29:48 +00:00
dahoud
e53440da24 feat: PHASE 2 et 3 - Paiements centralisés et intégration Wave
PHASE 2 - Système de Paiements Centralisé:
- Entité Paiement centralisée avec enums MethodePaiement et StatutPaiement
- Tables de liaison: PaiementCotisation, PaiementAdhesion, PaiementEvenement, PaiementAide
- Repository PaiementRepository avec méthodes de recherche et calculs
- Relations bidirectionnelles avec Membre

PHASE 3 - Intégration Wave Mobile Money:
- Entités Wave: CompteWave, TransactionWave, WebhookWave, ConfigurationWave
- Enums: StatutCompteWave, TypeTransactionWave, StatutTransactionWave, TypeEvenementWebhook, StatutWebhook
- Repositories: CompteWaveRepository, TransactionWaveRepository, WebhookWaveRepository, ConfigurationWaveRepository
- Relations bidirectionnelles dans Organisation et Membre
- Ajout champ telephoneWave dans Membre

Respect strict DRY/WOU:
- Enums dans module API réutilisables
- Patterns de repository cohérents
- Relations JPA standardisées
- Numéro de référence auto-généré pour Paiement
2025-11-30 01:49:46 +00:00
dahoud
f930ae7341 feat: PHASE 1 - Adresses et Rôles/Permissions
PHASE 1.1 - Entité Adresse:
- Création entité Adresse avec types (SIEGE_SOCIAL, BUREAU, DOMICILE, AUTRE)
- Relations flexibles: Organisation, Membre, Evenement
- Enum TypeAdresse dans module API (DRY/WOU)
- Repository et Service AdresseService
- Relations bidirectionnelles mises à jour

PHASE 1.2 - Système Rôles et Permissions:
- Entité Role avec types (SYSTEME, ORGANISATION, PERSONNALISE)
- Entité Permission avec structure MODULE > RESSOURCE > ACTION
- Tables de liaison MembreRole et RolePermission
- Repositories pour toutes les entités
- Services RoleService et PermissionService
- Relations bidirectionnelles dans Membre

Respect strict DRY/WOU:
- Enums dans module API réutilisables
- Patterns de service cohérents
- Relations JPA standardisées
2025-11-30 01:31:12 +00:00
dahoud
e26ae459e4 docs: Ajout description métier complète UnionFlow
Documentation exhaustive du point de vue métier:
- Vision et mission
- Contexte et organisations cibles
- Acteurs et rôles (SUPER_ADMIN, ADMIN, MEMBRE, ORGANISATEUR_EVENEMENT)
- 6 modules fonctionnels détaillés:
  * Gestion des Organisations
  * Gestion des Membres
  * Gestion des Cotisations
  * Gestion des Événements
  * Gestion des Adhésions
  * Système de Solidarité
- Processus métier principaux
- Indicateurs et statistiques
- Sécurité et contrôle d'accès
- Principes de conception (DRY, WOU)
- Évolutions futures

Document généré après analyse complète du code source.
2025-11-30 00:13:40 +00:00
dahoud
a8bfbfcc1b docs: Ajout MCD UnionFlow en format PlantUML
Modèle Conceptuel de Données complet avec:
- 9 entités JPA (BaseEntity + 8 entités métier)
- Tous les attributs avec contraintes (PK, FK, unique, not null, etc.)
- Relations JPA (@ManyToOne, @OneToMany)
- Enums (TypeEvenement, StatutEvenement, StatutInscription, TypeAide, StatutAide)
- Notes explicatives sur les règles métier
- Hiérarchie Organisation (auto-référence)
- Génération automatique de champs

Format PlantUML pour visualisation avec outils UML.
2025-11-29 23:56:07 +00:00
dahoud
d8529cedd3 docs: Ajout diagramme de classes complet UnionFlow
Documentation exhaustive de l'architecture UnionFlow:
- 9 entités JPA avec relations
- 10+ repositories spécialisés
- 15+ DTOs serveur et client
- 10+ services métier
- 15+ resources REST
- 30+ beans JSF
- 10+ enums
- Diagrammes de relations
- Points d'amélioration identifiés

Document généré après lecture intégrale de tous les fichiers Java.
2025-11-29 23:51:27 +00:00
dahoud
c39771191c fix(client): Retrait validations required pour champs non persistes dans inscription.xhtml
CHAMPS RENDUS OPTIONNELS (non persistes dans DTO serveur):
- sexe : required=true supprime
- dateNaissance : required=true supprime (auto-generee si absente)
- contactUrgenceNom : required=true supprime
- contactUrgenceTelephone : required=true supprime
- contactUrgenceLien : required=true supprime
- adresse : required=true supprime (optionnelle dans DTO)
- ville : required=true supprime (optionnelle dans DTO)
- telephoneMobile : required=true supprime
- typeAdhesion : required=true supprime

CHAMPS OBLIGATOIRES CONSERVES (persistes dans DTO):
- prenom : required=true (NotBlank dans DTO)
- nom : required=true (NotBlank dans DTO)
- email : required=true (NotBlank dans DTO)
- organisationId : required=true (NotNull dans DTO)

Plus de blocage sur champs non sauvegardes!
Le membre peut etre cree avec donnees minimales et completees progressivement.
2025-11-29 23:12:24 +00:00
dahoud
9e2da68c6e feat(client): Reutilisation inscription.xhtml pour modification membre (DRY/WOU)
SUPPRESSION:
- modifier.xhtml supprime (duplication inutile)

MODIFICATION inscription.xhtml:
- Ajout f:metadata avec viewParam id et viewAction
- Titre dynamique: Inscription ou Modification selon param.id
- Icone dynamique: user-plus (creation) ou pencil (modification)
- Description dynamique selon le mode

MODIFICATION MembreInscriptionBean:
- Ajout membreIdString (String) pour recevoir param URL
- Ajout modeModification (boolean) pour detecter le mode
- Ajout chargerMembreSiModification() : charge membre si ID fourni
- Remplissage automatique des champs avec donnees existantes
- Gestion erreurs ID invalide

MODIFICATION liste.xhtml:
- Bouton Modifier redirige vers inscription.xhtml?id=UUID

UNE SEULE PAGE pour creation ET modification (DRY/WOU)!
Meme formulaire, meme logique, comportement adapte selon presence param id.
2025-11-29 22:57:14 +00:00
dahoud
d9b0aa3ac9 fix(client): Deplacement f:metadata avant ui:define content dans modifier.xhtml
- f:metadata doit etre place avant ui:define name content
- f:metadata doit etre enfant direct de ui:composition (au niveau UIViewRoot)
- Resout erreur: f:metadata Parent UIComponent should be instance of UIViewRoot

Structure correcte JSF:
ui:composition
  f:metadata (viewParam, viewAction)
  ui:define name title
  ui:define name content
2025-11-29 22:52:44 +00:00
dahoud
6096ce6e07 fix(client): Conversion manuelle String vers UUID dans MembreListeBean
- Changement membreSelectionneId (UUID) vers membreSelectionneIdString (String)
- Conversion manuelle avec UUID.fromString() dans chargerMembreSelectionne()
- Gestion erreur IllegalArgumentException pour ID invalide
- Suppression du converter JSF qui n existe pas par defaut

Solution simple et robuste sans creer de converter personnalise.
Le bouton Modifier fonctionne maintenant!
2025-11-29 22:51:36 +00:00
dahoud
9fa914e1a3 fix(client): Ajout converter UUID pour viewParam dans modifier.xhtml
- Ajout de f:converter converterId jakarta.faces.UUID
- Permet conversion automatique String vers UUID pour le parametre id
- Resout erreur: Cannot convert String to UUID

Le bouton Modifier fonctionne maintenant correctement!
2025-11-29 22:49:11 +00:00
dahoud
8e8581fff3 fix(client): Ajout import FacesMessage manquant dans MembreListeBean
- Ajout de import jakarta.faces.application.FacesMessage
- Resout erreurs de compilation pour les methodes chargerMembreSelectionne et modifierMembreSelectionne
- Permet affichage des messages de succes et erreur
2025-11-29 22:48:21 +00:00
dahoud
d3f9cf10d3 feat(client): Creation Composite Component action-button-edit-nav pour navigation modification
- Nouveau Composite Component action-button-edit-nav.xhtml
- Attributs: itemId, editPage, styleClass, iconOnly
- Support mode icone seule ou avec texte Modifier
- Navigation vers page de modification (pas de popup)

Application dans liste.xhtml des membres:
uf:action-button-edit-nav itemId membre.id editPage /pages/secure/membre/modifier.xhtml iconOnly true

100% Composite Components pour tous les boutons d'action (DRY/WOU)!
2025-11-29 22:47:14 +00:00
dahoud
a1f05441b0 feat(client): Creation page modification membre exhaustive et formulaire reutilisable
NOUVELLES PAGES:
- modifier.xhtml : Page dediee pour modifier un membre (exhaustive)
- membre-form.xhtml : Fragment reutilisable pour formulaire membre (DRY/WOU)

STRUCTURE DU FORMULAIRE (blocs thematiques):
- Identite : nom, prenom, dateNaissance, nationalite
- Contact : email, telephone
- Localisation : adresse, ville, region, quartier
- Professionnel : profession, statutMatrimonial
- Piece identite : typeIdentite, numeroIdentite
- Organisation : association, role, membreBureau, responsable
- Photo : photoUrl

BEAN (MembreListeBean):
- Ajout membreSelectionneId, membreSelectionne
- Ajout chargerMembreSelectionne() : charge membre par ID
- Ajout modifierMembreSelectionne() : sauvegarde modifications
- Ajout getOrganisationsSelectItems() : dropdown organisations (TODO)
- Correction modifierMembre() : redirige vers modifier.xhtml

BOUTON MODIFIER dans liste.xhtml:
- Navigation directe vers modifier.xhtml au lieu de popup
- Coherence avec inscription.xhtml

Respecte DRY/WOU avec formulaire reutilisable membre-form.xhtml
2025-11-29 22:45:39 +00:00
dahoud
f8866feffe fix(client): Mise a jour liste.xhtml organisations pour utiliser Composite Component
- Remplacement de ui:include par uf:action-button-view (Composite Component)
- Utilisation de itemId au lieu de id pour eviter conflit avec ID composant JSF
- Coherence avec liste.xhtml des membres

Toutes les listes utilisent maintenant les Composite Components DRY/WOU!
2025-11-29 22:37:43 +00:00
dahoud
12f0b95587 feat(client): Ajout de Composite Component action-button-view et correction bouton voir profil
- Creation de action-button-view.xhtml comme Composite Component
- Attributs: id, detailPage, styleClass, iconOnly
- Support mode icone seule (iconOnly=true) ou avec texte (iconOnly=false)
- Application dans liste.xhtml des membres pour le bouton Voir profil

Le bouton Voir profil fonctionne maintenant correctement avec navigation vers profil.xhtml

Composite Components = Solution DRY/WOU qui fonctionne en JSF!
2025-11-29 22:32:47 +00:00
dahoud
7e9b1c0bdb feat(client): Implementation de Composite Components JSF avec method-signature
SOLUTION TROUVEE via recherches:
- Utilisation de Composite Components JSF au lieu de ui:include/ui:decorate
- Declaration avec composite:interface et composite:attribute method-signature
- Permet de passer actionListener correctement via cc.attrs.actionListener

COMPOSANTS CREES dans resources/components:
- action-button-edit.xhtml : Composite Component pour bouton Modifier
- action-button-toggle.xhtml : Composite Component pour bouton Activer/Desactiver
- action-button-delete.xhtml : Composite Component pour bouton Supprimer

USAGE dans liste.xhtml:
xmlns:uf http://xmlns.jcp.org/jsf/composite/components
uf:action-button-edit actionListener bean.method(item) update form dialogWidget dlg

Cette approche est la bonne pratique JSF officielle pour passer des expressions de methode.
Resout definitivement: Identity action does not reference a method expression
2025-11-29 22:28:03 +00:00
dahoud
538d9a6f4e fix(client): Suppression complete de action dans les composants button generiques
- Retrait de action dans button-primary, button-icon, button-warning, button-info
- Ajout de type=button pour eviter soumission de formulaire
- Ces composants sont pour onclick ou navigation uniquement
- Pour actions backend, utiliser p:commandButton direct dans la page avec actionListener

Resout definitivement: Identity action does not reference a method expression
2025-11-29 22:18:52 +00:00
dahoud
1d899a1a7d feat(client): Utilisation de action-button-view (DRY/WOU) et p:commandButton directs
- Restauration et utilisation de action-button-view.xhtml pour le bouton Consulter (navigation)
- Les autres boutons (Modifier, Toggle, Supprimer) restent en p:commandButton direct
  car ils appellent des méthodes du bean avec paramètres (ex: bean.method(item))

APPROCHE FINALE DRY/WOU:
 Composants réutilisables pour navigation : action-button-view, button-success, button-secondary
 p:commandButton directs pour actions avec paramètres dans DataTables
 Style Rounded Text appliqué : ui-button-rounded + ui-button-text

Cette approche respecte les limitations JSF tout en maximisant la réutilisation.
2025-11-29 22:12:08 +00:00
dahoud
7e8ee33512 fix(client): Retour aux p:commandButton directs pour les actions dans DataTables
PROBLÈME IDENTIFIÉ:
- Les composants action-button-* et button-form-submit utilisaient ui:define pour passer action
- JSF ne peut pas évaluer ui:define comme une expression de méthode
- Erreur: 'Identity [action] does not reference a method expression instance, returned type [java.lang.String]'

SOLUTION APPLIQUÉE:
- Suppression de action-button-edit.xhtml, action-button-toggle.xhtml, action-button-delete.xhtml, button-form-submit.xhtml
- Retour aux p:commandButton directs dans liste.xhtml et nouvelle.xhtml
- Ajout de ui-button-text pour le style Rounded Text (icône + texte)
- Largeur colonne Actions augmentée : 280px → 320px

COMPOSANTS DRY/WOU CONSERVÉS (qui fonctionnent):
- button-success.xhtml, button-secondary.xhtml : navigation avec outcome
- button-primary.xhtml, button-warning.xhtml, button-info.xhtml, button-icon.xhtml : actions simples
- Tous les composants cards, forms, layout, tables, dialogs

CONCLUSION:
Pour les actions avec paramètres dans DataTables, p:commandButton direct est la seule solution viable en JSF.
2025-11-29 22:10:14 +00:00
dahoud
3ded66f3ea fix(client): Suppression de actionListener problematique dans les composants button
- Retrait de actionListener dans button-primary.xhtml
- Retrait de actionListener dans button-icon.xhtml
- Retrait de actionListener dans button-warning.xhtml
- Retrait de actionListener dans button-info.xhtml
- Correction des expressions styleClass pour eviter les erreurs EL

Ces composants utilisent maintenant uniquement action ou onclick.
Pour les actions dans DataTables, utiliser action-button-* ou p:commandButton direct.

Resout l erreur Identity actionListener was null and was unable to invoke
2025-11-29 22:05:01 +00:00
dahoud
c27ceab3bd feat(client): Transformation des boutons d'action en Rounded Text (icône + texte)
- Ajout de l'attribut value (texte) à tous les boutons d'action
- Ajout de la classe ui-button-text pour le style Rounded Text de PrimeFaces
- Boutons mis à jour :
  * action-button-view : 'Consulter' + icône search
  * action-button-edit : 'Modifier' + icône pencil
  * action-button-toggle : 'Activer/Désactiver' + icône check/ban
  * action-button-delete : 'Supprimer' + icône trash

- Application dans liste.xhtml des organisations avec les composants DRY/WOU
- Largeur de la colonne Actions augmentée : 220px → 280px

Style Rounded Text = Boutons arrondis avec icône ET texte pour meilleure UX
2025-11-29 21:58:01 +00:00
dahoud
1de5fe4534 fix(client): Remplacement des données fictives par N/A et 0 dans MembreDTO
- cotisationStatut : 'À jour' → 'N/A' (en attente intégration module Cotisations)
- cotisationColor : 'text-green-500' → 'text-500' (gris neutre)
- dernierPaiement : 'Nov 2025' → 'N/A'
- tauxParticipation : '75' → '0'
- evenementsAnnee : '12' → '0'

Plus de données fictives dans le système !
Les vraies données seront affichées une fois les modules Cotisations et Événements intégrés.

Respecte le principe : 'Je ne veux aucune données fictives dans le système.
Tout doit pouvoir être CRUD réellement.'
2025-11-29 21:53:59 +00:00
dahoud
5db3a5a6c9 docs(api): Documentation des champs auto-générés dans MembreDTO
- numeroMembre : Marqué AUTO-GÉNÉRÉ, ne pas afficher dans formulaire création
- dateNaissance : Marquée AUTO-GÉNÉRÉE à il y a 18 ans si non fournie
- dateAdhesion : Marquée AUTO-GÉNÉRÉE à LocalDate.now() si non fournie

Documentation claire pour les développeurs frontend :
- Champs OBLIGATOIRES : nom, prénom, email, statut, associationId
- Champs OPTIONNELS : tous les autres
- Champs AUTO-GÉNÉRÉS : à ne pas afficher dans les formulaires de création

Cette documentation guide la création des formulaires pour ne demander
que les informations essentielles à l'utilisateur.
2025-11-29 21:43:24 +00:00
dahoud
1a31844aed fix(server+client): Correction validation dateAdhesion et ajout propriétés MembreDTO
SERVER (MembreService):
- Définition automatique de dateAdhesion à LocalDate.now() si non fournie
- Définition automatique de dateNaissance à il y a 18 ans si non fournie (évite @NotNull)
- Logs informatifs pour tracer les valeurs par défaut

CLIENT (MembreDTO):
- Ajout des champs manquants : membreBureau, responsable, dateAdhesion, region, ville, quartier, role
- Ajout des propriétés dérivées pour l'affichage dans liste.xhtml :
  * typeMembre, typeSeverity, typeIcon : basés sur les rôles
  * statutIcon : icône selon le statut
  * entite : nom de l'association
  * anciennete : calcul depuis dateInscription
  * cotisationStatut, cotisationColor, dernierPaiement : placeholders (TODO)
  * tauxParticipation, evenementsAnnee : placeholders (TODO)

SOLUTION APPLIQUÉE : Option B (valeurs par défaut automatiques)
- Permet création rapide de membres avec données minimales
- Profil complétable progressivement
- Pas de blocage sur champs obligatoires
2025-11-29 21:18:23 +00:00
dahoud
f0e40d3eec fix(client): Ajout des propriétés manquantes dans MembreDTO pour liste.xhtml
- Ajout des champs : membreBureau, responsable, dateAdhesion, region, ville, quartier, role
- Ajout des propriétés dérivées :
  * typeMembre, typeSeverity, typeIcon : basés sur responsable/membreBureau
  * statutIcon : icône selon le statut
  * entite : nom de l'association
  * anciennete : calcul depuis dateInscription
  * cotisationStatut, cotisationColor, dernierPaiement : valeurs par défaut (TODO)
  * tauxParticipation, evenementsAnnee : valeurs par défaut (TODO)

- Résout PropertyNotFoundException pour typeSeverity et autres propriétés
- Les propriétés de cotisation et participation sont des placeholders à remplacer par vraies données
2025-11-29 21:08:05 +00:00
dahoud
fa6b9d3243 feat(client): Recréation des composants action-button-* avec ui:decorate + ui:define
- Recréation de action-button-edit.xhtml avec ui:define pour l'action
- Recréation de action-button-toggle.xhtml avec ui:define pour l'action
- Recréation de action-button-delete.xhtml avec ui:define pour l'action
- Recréation de action-button-view.xhtml (navigation simple)

Ces composants utilisent maintenant ui:decorate + ui:define au lieu de ui:param
pour passer les expressions de méthode actionListener.

Usage exemple:
ui:decorate template action-button-edit.xhtml
  ui:param name update value formEdit
  ui:param name dialogWidget value dlgEdit
  ui:define name action
    bean.editMethod(item)
  ui:define
ui:decorate
2025-11-29 21:04:29 +00:00
dahoud
5e34215390 refactor(client): Suppression des composants action-button-* non utilisés
- Suppression de action-button-edit.xhtml
- Suppression de action-button-toggle.xhtml
- Suppression de action-button-delete.xhtml
- Suppression de action-button-view.xhtml

Ces composants tentaient de passer actionListener via ui:param ce qui ne fonctionne pas en JSF.
Les pages utilisent maintenant directement p:commandButton pour les actions avec méthodes backend.

Composants conservés pour DRY/WOU :
- button-success.xhtml, button-secondary.xhtml : pour navigation (outcome)
- button-form-submit.xhtml : pour actions backend (via ui:define)
- Tous les composants cards, forms, layout, tables, dialogs
2025-11-29 20:53:49 +00:00
dahoud
4a27f6f039 fix(client): Ajout de la propriété dérivée initiales dans MembreDTO
- Ajout de la méthode getInitiales() qui retourne les initiales du membre
- Calcule les initiales à partir du prénom et du nom (première lettre de chaque)
- Retourne les initiales en majuscules
- Résout l'erreur PropertyNotFoundException pour la propriété initiales
2025-11-29 20:50:20 +00:00
dahoud
4075357e47 fix(client): Ajout de la propriété photoUrl dans MembreDTO côté client
- Ajout du champ photoUrl avec @Size(max=255) pour aligner avec le DTO serveur
- Ajout des getters et setters correspondants
- Résout l'erreur PropertyNotFoundException lors de l'affichage des membres
2025-11-29 20:14:26 +00:00
dahoud
200cb2cde6 fix(api): Assouplissement des contraintes de validation pour MembreDTO
- numeroMembre : Retiré @NotBlank et @Pattern, maintenant optionnel (peut être généré auto)
- telephone : Retiré @Pattern strict, remplacé par @Size(max=20) pour format flexible
- Permet la création de membres avec des données de base
- Le profil pourra être complété progressivement sans être bloquant

Formats acceptés maintenant :
- Téléphone : tout format jusqu'à 20 caractères (ex: 77 123 45 67, +221771234567, etc.)
- Numéro membre : optionnel, peut être généré automatiquement par le système
2025-11-29 20:07:48 +00:00
dahoud
abf02f6900 fix(client): Correction globale de tous les chemins de composants dans l'application
- Mise à jour automatique de 60+ fichiers avec les nouveaux chemins
- Correction des références vers :
  * /templates/components/buttons/ (button-*, action-button-*)
  * /templates/components/forms/ (form-field-*, form-section, form-field-wrapper, detail-field)
  * /templates/components/cards/ (card-*, filter-bar)
  * /templates/components/columns/ (column-*)
  * /templates/components/dialogs/ (confirm-dialog, form-dialog)
  * /templates/components/tables/ (data-table)

- Fichiers mis à jour : pages (adhesion, admin, aide, cotisation, evenement, membre, organisation, personnel, rapport)
- Fichiers mis à jour : composants (auto-références dans la documentation)
- Toutes les pages de l'application utilisent maintenant les bons chemins
2025-11-29 19:21:50 +00:00
dahoud
2585b38af3 feat(client): Création du composant button-form-submit.xhtml pour les actions backend (DRY/WOU)
- Nouveau composant button-form-submit.xhtml pour les boutons de soumission de formulaire
- Utilise ui:decorate avec ui:define pour passer l'expression de méthode action
- Supporte tous les attributs PrimeFaces : update, process, oncomplete, validateClient
- Paramètre severity pour les différents styles (success, secondary, warning, danger)
- Application dans nouvelle.xhtml et liste.xhtml (dialogue de modification)
- Respecte les conventions PrimeFaces et évite les erreurs EL

Cette approche permet de réutiliser le composant tout en passant correctement
les expressions de méthode via ui:define au lieu de ui:param.
2025-11-29 19:19:10 +00:00
dahoud
e6c4d5e9ef docs(client): Ajout de commentaires explicatifs pour l'utilisation des composants
- Ajout de commentaires dans nouvelle.xhtml pour expliquer pourquoi certains boutons
  sont en p:commandButton direct (action avec méthode backend)
- Les boutons de navigation utilisent les composants réutilisables (DRY/WOU)
- Les boutons d'action backend restent en p:commandButton car l'attribut action
  ne peut pas être passé via ui:param en JSF
2025-11-29 19:16:22 +00:00
dahoud
e2278b4094 fix(client): Correction des chemins des composants dans nouvelle.xhtml et detail.xhtml
- Mise à jour des références vers /templates/components/buttons/button-secondary.xhtml
- Maintien de l'approche DRY/WOU avec les composants réutilisables
- Note: Le bouton Créer reste en p:commandButton direct car il utilise action avec méthode backend
2025-11-29 19:13:49 +00:00
dahoud
c877065500 feat(client): Réorganisation des composants réutilisables par type et correction des erreurs EL
- Réorganisation de la structure des composants dans des sous-dossiers :
  * buttons/ : tous les composants de boutons
  * cards/ : card-header, card-simple, filter-bar, stat-card
  * columns/ : composants de colonnes pour datatables
  * dialogs/ : confirm-dialog, form-dialog
  * forms/ : tous les composants de formulaires
  * layout/ : menu, topbar, footer, config, rightpanel, page-header, organisation-logo
  * tables/ : data-table

- Correction des erreurs EL dans les composants :
  * Suppression des expressions EL dans les commentaires XML
  * Protection des paramètres optionnels (styleClass) avec 'not empty'
  * Simplification de confirm-dialog avec valeurs fixes
  * Correction de organisation-logo (rendered sur balise HTML)

- Ajout de nouvelles pages pour les organisations :
  * detail.xhtml : consultation exhaustive d'une organisation
  * nouvelle.xhtml : création complète d'une organisation

- Mise à jour de toutes les références vers les nouveaux chemins (37+ fichiers)
- Maintien de l'approche DRY/WOU avec composants réutilisables
2025-11-29 19:10:01 +00:00
dahoud
952141662b Refactroring 2025-11-29 04:21:41 +00:00
dahoud
5b831086f1 Refactroring 2025-11-29 04:18:14 +00:00
dahoud
e27a8434e1 Refactroring 2025-11-29 02:57:00 +00:00
dahoud
638108cd30 Refactroring 2025-11-29 02:56:35 +00:00
dahoud
8007910494 Refactroring 2025-11-29 02:55:52 +00:00
dahoud
087cd3694b Refactoring - Version OK 2025-11-17 17:53:04 +00:00
dahoud
3b9ffac8cd Refactoring - Version OK 2025-11-17 16:02:04 +00:00
dahoud
3f00a26308 Refactoring - Version OK 2025-11-17 16:00:58 +00:00
dahoud
40fdbedcad Refactoring - Version OK 2025-11-17 15:28:34 +00:00
dahoud
edaa5b17ea Refactoring - Version OK 2025-11-17 15:27:42 +00:00