Commit Graph

95 Commits

Author SHA1 Message Date
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
dahoud
990ee549e6 gitignore propre 2025-11-09 16:31:19 +00:00
dahoud
8cec643361 Version OK 2025-10-05 14:26:15 +00:00
dahoud
291847924c Clean project: remove test files, debug logs, and add documentation 2025-10-05 13:41:33 +00:00
DahoudG
96a17eadbd Alignement design systeme OK 2025-09-20 03:56:11 +00:00
DahoudG
a1214bc116 Version stable - Authentifiaction Ok + Dashboard SuperAdmin 2025-09-19 18:34:04 +00:00
DahoudG
3f2398a55d Refactoring 2025-09-19 16:09:21 +00:00
DahoudG
4ac376b7e7 L'authentification Keycloak WebView est maintenant 100% fonctionnelle avec navigation automatique vers le dashboard ! 2025-09-19 13:03:09 +00:00
DahoudG
098894bdc1 Authentification stable - WIP 2025-09-19 12:35:46 +00:00
DahoudG
63fe107f98 Refactoring 2025-09-17 17:54:06 +00:00
DahoudG
12d514d866 Versione OK Pour l'onglet événements. 2025-09-15 20:15:34 +00:00
DahoudG
8a619ee1bf MODULE SOLIDARITÉ BACKEND - DÉVELOPPEMENT EXHAUSTIF TERMINÉ !
📊 RÉSUMÉ COMPLET DE L'IMPLÉMENTATION
 RÉALISATIONS ACCOMPLIES
🏗️ 1. ENTITÉ JPA AIDE
 Entité complète avec 40+ propriétés métier
 Relations JPA : ManyToOne avec Membre et Organisation
 Validations Jakarta : Contraintes métier robustes
 Énumérations : StatutAide et TypeAide intégrées
 Méthodes métier : Approbation, rejet, versement, vues
 Callbacks JPA : PrePersist, PreUpdate automatiques
 Index optimisés : Performance des requêtes garantie
🗄️ 2. REPOSITORY PANACHE
 AideRepository complet avec 30+ méthodes spécialisées
 Recherche avancée : Filtres multiples et pagination
 Statistiques : Calculs globaux et par période
 Méthodes métier : Aides urgentes, suivi, consultations
 Optimisations : Requêtes performantes et indexées
⚙️ 3. SERVICE MÉTIER AIDESERVICE
 CRUD complet : Création, lecture, mise à jour
 Opérations métier : Approbation, rejet, versement, annulation
 Validation robuste : Règles métier et sécurité
 Conversion DTO/Entity : Mapping bidirectionnel complet
 Gestion d'erreurs : Exceptions métier appropriées
 Sécurité Keycloak : Contrôle d'accès granulaire
🌐 4. RESOURCE REST AIDERESOURCE
 API REST complète : 15+ endpoints documentés
 CRUD standard : GET, POST, PUT avec gestion d'erreurs
 Endpoints métier : Approbation, rejet, versement
 Recherche et filtrage : Par statut, membre, texte
 Statistiques : Dashboard et métriques
 Sécurité JAX-RS : @RolesAllowed avec Keycloak
 Documentation OpenAPI : Spécification automatique
🧪 5. TESTS COMPLETS
 Tests unitaires : AideServiceTest avec 15+ scénarios
 Tests d'intégration : AideResourceTest avec REST Assured
 Couverture complète : Cas nominaux et d'erreur
 Mocks Quarkus : @InjectMock pour isolation
 Sécurité testée : @TestSecurity pour autorisation
📋 6. ARCHITECTURE ET QUALITÉ
 Clean Architecture : Séparation des couches respectée
 Patterns établis : Cohérence avec modules existants
 Standards Java 2025 : Lombok, JPA, Quarkus, Jakarta
 Documentation JavaDoc : Classes et méthodes documentées
 Gestion d'erreurs : Exceptions appropriées et logging
 Validation métier : Règles business implémentées
🎯 FONCTIONNALITÉS IMPLÉMENTÉES
📝 GESTION DES DEMANDES D'AIDE
 Création de demandes avec validation complète
 Modification par le demandeur (si statut permet)
 Consultation avec incrémentation des vues
 Recherche textuelle dans titre/description
 Filtrage par statut, type, priorité, membre
⚖️ WORKFLOW D'ÉVALUATION
 Approbation avec montant et commentaires
 Rejet avec raison obligatoire
 Gestion des permissions par rôle Keycloak
 Traçabilité complète des actions
💰 GESTION DES VERSEMENTS
 Marquage comme versé avec détails transaction
 Support multi-modes : Mobile Money, virement, espèces
 Contrôle des montants et cohérence
 Historique des versements
📊 STATISTIQUES ET REPORTING
 Statistiques globales par statut et type
 Statistiques par période configurable
 Aides les plus consultées
 Suivi des aides nécessitant attention
 Métriques de performance
🔒 SÉCURITÉ ET PERMISSIONS
 Authentification Keycloak obligatoire
 Autorisation granulaire par rôle
 Contrôle d'accès aux données sensibles
 Audit trail complet
🚀 ENDPOINTS API DISPONIBLES
CRUD Standard
GET /api/aides - Liste paginée des aides actives
GET /api/aides/{id} - Récupération par ID
GET /api/aides/reference/{ref} - Récupération par référence
POST /api/aides - Création nouvelle demande
PUT /api/aides/{id} - Mise à jour demande
Opérations Métier
POST /api/aides/{id}/approuver - Approbation avec montant
POST /api/aides/{id}/rejeter - Rejet avec raison
POST /api/aides/{id}/verser - Marquage versement
Recherche et Filtrage
GET /api/aides/statut/{statut} - Filtrage par statut
GET /api/aides/membre/{membreId} - Aides d'un membre
GET /api/aides/publiques - Aides publiques
GET /api/aides/recherche?q=terme - Recherche textuelle
GET /api/aides/urgentes - Aides urgentes en attente
Statistiques
GET /api/aides/statistiques - Métriques globales
2025-09-15 09:57:53 +00:00
DahoudG
f89f6167cc feat(mobile): Implement Keycloak WebView authentication with HTTP callback
- Replace flutter_appauth with custom WebView implementation to resolve deep link issues
- Add KeycloakWebViewAuthService with integrated WebView for seamless authentication
- Configure Android manifest for HTTP cleartext traffic support
- Add network security config for development environment (192.168.1.11)
- Update Keycloak client to use HTTP callback endpoint (http://192.168.1.11:8080/auth/callback)
- Remove obsolete keycloak_auth_service.dart and temporary scripts
- Clean up dependencies and regenerate injection configuration
- Tested successfully on multiple Android devices (Xiaomi 2201116TG, SM A725F)

BREAKING CHANGE: Authentication flow now uses WebView instead of external browser
- Users will see Keycloak login page within the app instead of browser redirect
- Resolves ERR_CLEARTEXT_NOT_PERMITTED and deep link state management issues
- Maintains full OIDC compliance with PKCE flow and secure token storage

Technical improvements:
- WebView with custom navigation delegate for callback handling
- Automatic token extraction and user info parsing from JWT
- Proper error handling and user feedback
- Consistent authentication state management across app lifecycle
2025-09-15 01:44:16 +00:00
DahoudG
73459b3092 Version propre - Dashboard enhanced 2025-09-13 19:05:06 +00:00
DahoudG
3df010add7 Appli Flutter se connecte bien à l'API. 2025-09-12 03:15:21 +00:00
DahoudG
8184bc77bb Tests à un bon niveau - A completer plus tard. 2025-09-11 11:53:54 +00:00
DahoudG
b8c7949f41 propre 2025-09-11 02:33:50 +00:00
DahoudG
bf79fa4e04 Server-Api OK 2025-09-10 22:02:16 +00:00
DahoudG
b2a23bdf89 first commit 2025-08-20 21:00:35 +00:00