From 5db3a5a6c91438940e7d99c0126e2cdc377f6289 Mon Sep 17 00:00:00 2001 From: dahoud Date: Sat, 29 Nov 2025 21:43:24 +0000 Subject: [PATCH] =?UTF-8?q?docs(api):=20Documentation=20des=20champs=20aut?= =?UTF-8?q?o-g=C3=A9n=C3=A9r=C3=A9s=20dans=20MembreDTO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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. --- .../lions/unionflow/client/dto/MembreDTO.java | 32 ++++++++++++------- .../server/api/dto/membre/MembreDTO.java | 28 ++++++++++------ 2 files changed, 40 insertions(+), 20 deletions(-) diff --git a/unionflow-client-quarkus-primefaces-freya/src/main/java/dev/lions/unionflow/client/dto/MembreDTO.java b/unionflow-client-quarkus-primefaces-freya/src/main/java/dev/lions/unionflow/client/dto/MembreDTO.java index 5bcb056..eb468cc 100644 --- a/unionflow-client-quarkus-primefaces-freya/src/main/java/dev/lions/unionflow/client/dto/MembreDTO.java +++ b/unionflow-client-quarkus-primefaces-freya/src/main/java/dev/lions/unionflow/client/dto/MembreDTO.java @@ -16,27 +16,33 @@ public class MembreDTO implements Serializable { private UUID id; - @NotBlank(message = "Le numéro de membre est obligatoire", groups = {ValidationGroups.CreateMember.class, ValidationGroups.FullRegistration.class}) - @ValidMemberNumber(groups = {ValidationGroups.CreateMember.class, ValidationGroups.UpdateMember.class, ValidationGroups.FullRegistration.class}) + /** Numéro unique du membre - OPTIONNEL (généré automatiquement si non fourni) */ + @Size(max = 50, message = "Le numéro de membre ne peut pas dépasser 50 caractères") private String numeroMembre; - @NotBlank(message = "Le nom est obligatoire", groups = {ValidationGroups.CreateMember.class, ValidationGroups.QuickRegistration.class, ValidationGroups.FullRegistration.class}) - @Size(min = 2, max = 50, message = "Le nom doit contenir entre 2 et 50 caractères", groups = {ValidationGroups.CreateMember.class, ValidationGroups.UpdateMember.class, ValidationGroups.QuickRegistration.class, ValidationGroups.FullRegistration.class}) - @Pattern(regexp = "^[a-zA-ZÀ-ÿ\\s\\-']+$", message = "Le nom ne peut contenir que des lettres, espaces, tirets et apostrophes", groups = {ValidationGroups.CreateMember.class, ValidationGroups.UpdateMember.class, ValidationGroups.QuickRegistration.class, ValidationGroups.FullRegistration.class}) + /** Nom de famille du membre - OBLIGATOIRE */ + @NotBlank(message = "Le nom est obligatoire") + @Size(min = 2, max = 50, message = "Le nom doit contenir entre 2 et 50 caractères") + @Pattern(regexp = "^[a-zA-ZÀ-ÿ\\s\\-']+$", message = "Le nom ne peut contenir que des lettres, espaces, tirets et apostrophes") private String nom; - @NotBlank(message = "Le prénom est obligatoire", groups = {ValidationGroups.CreateMember.class, ValidationGroups.QuickRegistration.class, ValidationGroups.FullRegistration.class}) - @Size(min = 2, max = 50, message = "Le prénom doit contenir entre 2 et 50 caractères", groups = {ValidationGroups.CreateMember.class, ValidationGroups.UpdateMember.class, ValidationGroups.QuickRegistration.class, ValidationGroups.FullRegistration.class}) - @Pattern(regexp = "^[a-zA-ZÀ-ÿ\\s\\-']+$", message = "Le prénom ne peut contenir que des lettres, espaces, tirets et apostrophes", groups = {ValidationGroups.CreateMember.class, ValidationGroups.UpdateMember.class, ValidationGroups.QuickRegistration.class, ValidationGroups.FullRegistration.class}) + /** Prénom du membre - OBLIGATOIRE */ + @NotBlank(message = "Le prénom est obligatoire") + @Size(min = 2, max = 50, message = "Le prénom doit contenir entre 2 et 50 caractères") + @Pattern(regexp = "^[a-zA-ZÀ-ÿ\\s\\-']+$", message = "Le prénom ne peut contenir que des lettres, espaces, tirets et apostrophes") private String prenom; - @Email(message = "Format d'email invalide", groups = {ValidationGroups.CreateMember.class, ValidationGroups.UpdateMember.class, ValidationGroups.QuickRegistration.class, ValidationGroups.FullRegistration.class}) - @Size(max = 100, message = "L'email ne peut pas dépasser 100 caractères", groups = {ValidationGroups.CreateMember.class, ValidationGroups.UpdateMember.class, ValidationGroups.QuickRegistration.class, ValidationGroups.FullRegistration.class}) + /** Adresse email du membre - OBLIGATOIRE */ + @NotBlank(message = "L'email est obligatoire") + @Email(message = "Format d'email invalide") + @Size(max = 100, message = "L'email ne peut pas dépasser 100 caractères") private String email; - @ValidPhoneNumber + /** Numéro de téléphone du membre - OPTIONNEL (format flexible) */ + @Size(max = 20, message = "Le téléphone ne peut pas dépasser 20 caractères") private String telephone; + /** Date de naissance du membre - OPTIONNELLE (définie par défaut à il y a 18 ans si non fournie) */ @JsonFormat(pattern = "yyyy-MM-dd") @Past(message = "La date de naissance doit être dans le passé") private LocalDate dateNaissance; @@ -59,15 +65,19 @@ public class MembreDTO implements Serializable { @Size(max = 20, message = "Le type d'identité ne peut pas dépasser 20 caractères") private String typeIdentite; + /** URL de la photo de profil - OPTIONNELLE */ @Size(max = 255, message = "L'URL de la photo ne peut pas dépasser 255 caractères") private String photoUrl; + /** Statut du membre - OBLIGATOIRE */ @NotNull(message = "Le statut est obligatoire") private String statut; + /** Identifiant de l'association - OBLIGATOIRE */ @NotNull(message = "L'association est obligatoire") private UUID associationId; + /** Nom de l'association (lecture seule) */ private String associationNom; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/membre/MembreDTO.java b/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/membre/MembreDTO.java index 491b9e2..5f761f7 100644 --- a/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/membre/MembreDTO.java +++ b/unionflow-server-api/src/main/java/dev/lions/unionflow/server/api/dto/membre/MembreDTO.java @@ -29,11 +29,14 @@ public class MembreDTO extends BaseDTO { private static final long serialVersionUID = 1L; - /** Numéro unique du membre (format: UF-YYYY-XXXXXXXX) - Optionnel, peut être généré automatiquement */ + /** + * Numéro unique du membre (format: UF-YYYY-XXXXXXXX) + * AUTO-GÉNÉRÉ si non fourni - Ne pas afficher dans le formulaire de création + */ @Size(max = 50, message = "Le numéro de membre ne peut pas dépasser 50 caractères") private String numeroMembre; - /** Nom de famille du membre */ + /** Nom de famille du membre - OBLIGATOIRE */ @NotBlank(message = "Le nom" + ValidationConstants.OBLIGATOIRE_MESSAGE) @Size( min = ValidationConstants.NOM_PRENOM_MIN_LENGTH, @@ -44,7 +47,7 @@ public class MembreDTO extends BaseDTO { message = "Le nom ne peut contenir que des lettres, espaces, tirets et apostrophes") private String nom; - /** Prénom du membre */ + /** Prénom du membre - OBLIGATOIRE */ @NotBlank(message = "Le prénom" + ValidationConstants.OBLIGATOIRE_MESSAGE) @Size( min = ValidationConstants.NOM_PRENOM_MIN_LENGTH, @@ -55,18 +58,22 @@ public class MembreDTO extends BaseDTO { message = "Le prénom ne peut contenir que des lettres, espaces, tirets et apostrophes") private String prenom; - /** Adresse email du membre */ + /** Adresse email du membre - OBLIGATOIRE */ + @NotBlank(message = "L'email" + ValidationConstants.OBLIGATOIRE_MESSAGE) @Email(message = ValidationConstants.EMAIL_FORMAT_MESSAGE) @Size( max = ValidationConstants.EMAIL_MAX_LENGTH, message = ValidationConstants.EMAIL_SIZE_MESSAGE) private String email; - /** Numéro de téléphone du membre - Format flexible */ + /** Numéro de téléphone du membre - Optionnel, format flexible */ @Size(max = 20, message = "Le téléphone ne peut pas dépasser 20 caractères") private String telephone; - /** Date de naissance du membre */ + /** + * Date de naissance du membre - OPTIONNELLE + * AUTO-GÉNÉRÉE à il y a 18 ans si non fournie - Peut être laissée vide dans le formulaire + */ @JsonFormat(pattern = "yyyy-MM-dd") @Past(message = "La date de naissance doit être dans le passé") private LocalDate dateNaissance; @@ -95,18 +102,21 @@ public class MembreDTO extends BaseDTO { @Size(max = 20, message = "Le type d'identité ne peut pas dépasser 20 caractères") private String typeIdentite; - /** Statut du membre */ + /** Statut du membre - OBLIGATOIRE */ @NotNull(message = "Le statut est obligatoire") private StatutMembre statut; - /** Identifiant de l'association à laquelle appartient le membre */ + /** Identifiant de l'association à laquelle appartient le membre - OBLIGATOIRE */ @NotNull(message = "L'association est obligatoire") private UUID associationId; /** Nom de l'association (lecture seule) */ private String associationNom; - /** Date d'adhésion du membre */ + /** + * Date d'adhésion du membre - OPTIONNELLE + * AUTO-GÉNÉRÉE à LocalDate.now() si non fournie - Ne pas afficher dans le formulaire de création + */ @JsonFormat(pattern = "yyyy-MM-dd") private LocalDate dateAdhesion;