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
This commit is contained in:
dahoud
2025-11-29 21:18:23 +00:00
parent f0e40d3eec
commit 1a31844aed

View File

@@ -45,6 +45,18 @@ public class MembreService {
if (membre.getNumeroMembre() == null || membre.getNumeroMembre().isEmpty()) { if (membre.getNumeroMembre() == null || membre.getNumeroMembre().isEmpty()) {
membre.setNumeroMembre(genererNumeroMembre()); membre.setNumeroMembre(genererNumeroMembre());
} }
// Définir la date d'adhésion si non fournie
if (membre.getDateAdhesion() == null) {
membre.setDateAdhesion(LocalDate.now());
LOG.infof("Date d'adhésion automatiquement définie à: %s", membre.getDateAdhesion());
}
// Définir la date de naissance par défaut si non fournie (pour éviter @NotNull)
if (membre.getDateNaissance() == null) {
membre.setDateNaissance(LocalDate.now().minusYears(18)); // Majeur par défaut
LOG.warn("Date de naissance non fournie, définie par défaut à il y a 18 ans");
}
// Vérifier l'unicité de l'email // Vérifier l'unicité de l'email
if (membreRepository.findByEmail(membre.getEmail()).isPresent()) { if (membreRepository.findByEmail(membre.getEmail()).isPresent()) {