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.
This commit is contained in:
@@ -42,6 +42,8 @@ public class MembreInscriptionBean implements Serializable {
|
||||
|
||||
// Propriétés système
|
||||
private String numeroGenere;
|
||||
private String membreIdString; // ID du membre en mode modification
|
||||
private boolean modeModification = false;
|
||||
|
||||
// Informations personnelles
|
||||
private String prenom;
|
||||
@@ -103,8 +105,10 @@ public class MembreInscriptionBean implements Serializable {
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
// Générer un numéro de membre automatiquement
|
||||
this.numeroGenere = "M" + System.currentTimeMillis();
|
||||
// Générer un numéro de membre automatiquement (seulement en mode création)
|
||||
if (!modeModification) {
|
||||
this.numeroGenere = "M" + System.currentTimeMillis();
|
||||
}
|
||||
|
||||
// Charger les organisations actives
|
||||
try {
|
||||
@@ -116,6 +120,61 @@ public class MembreInscriptionBean implements Serializable {
|
||||
}
|
||||
}
|
||||
|
||||
// Getters/Setters pour mode modification
|
||||
public String getMembreIdString() {
|
||||
return membreIdString;
|
||||
}
|
||||
|
||||
public void setMembreIdString(String membreIdString) {
|
||||
this.membreIdString = membreIdString;
|
||||
}
|
||||
|
||||
public boolean isModeModification() {
|
||||
return modeModification;
|
||||
}
|
||||
|
||||
// Méthode appelée par f:viewAction pour charger le membre en mode modification
|
||||
public void chargerMembreSiModification() {
|
||||
if (membreIdString != null && !membreIdString.isEmpty()) {
|
||||
try {
|
||||
java.util.UUID id = java.util.UUID.fromString(membreIdString);
|
||||
MembreDTO membre = membreService.obtenirParId(id);
|
||||
|
||||
if (membre != null) {
|
||||
modeModification = true;
|
||||
// Remplir tous les champs avec les données du membre
|
||||
this.numeroGenere = membre.getNumeroMembre();
|
||||
this.prenom = membre.getPrenom();
|
||||
this.nom = membre.getNom();
|
||||
this.email = membre.getEmail();
|
||||
this.telephone = membre.getTelephone();
|
||||
this.dateNaissance = membre.getDateNaissance();
|
||||
this.adresse = membre.getAdresse();
|
||||
this.ville = membre.getVille();
|
||||
this.nationalite = membre.getNationalite();
|
||||
this.profession = membre.getProfession();
|
||||
this.situationMatrimoniale = membre.getStatutMatrimonial();
|
||||
this.organisationId = membre.getAssociationId() != null ? membre.getAssociationId().toString() : null;
|
||||
// TODO: Charger les autres champs si disponibles
|
||||
|
||||
LOGGER.info("Membre chargé pour modification: " + membre.getNomComplet());
|
||||
} else {
|
||||
FacesContext.getCurrentInstance().addMessage(null,
|
||||
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erreur", "Membre introuvable"));
|
||||
}
|
||||
} catch (IllegalArgumentException e) {
|
||||
LOGGER.severe("ID invalide: " + membreIdString);
|
||||
FacesContext.getCurrentInstance().addMessage(null,
|
||||
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erreur", "Identifiant de membre invalide"));
|
||||
} catch (Exception e) {
|
||||
LOGGER.severe("Erreur lors du chargement du membre: " + e.getMessage());
|
||||
FacesContext.getCurrentInstance().addMessage(null,
|
||||
new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erreur",
|
||||
"Impossible de charger le membre: " + e.getMessage()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Actions
|
||||
public String inscrire() {
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user