From 7e036c1966e698a31208006591c3bac1132ec920 Mon Sep 17 00:00:00 2001 From: Youssef Date: Mon, 29 Jun 2026 11:11:53 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20param=C3=A9trage=20dynamique=20des=20do?= =?UTF-8?q?tations=20(sexe,=20tailles,=20couleurs)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/astalange/core/entity/Dotation.java | 6 +++ .../com/astalange/core/entity/Equipement.java | 18 ++++++++ .../migration/V31__add_equipment_options.sql | 5 +++ .../web/controller/DotationController.java | 2 + .../resources/templates/adherents/form.html | 45 +++++++++++++------ .../parametrage/equipements_form.html | 22 ++++++++- 6 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 as-talange-core/src/main/resources/db/migration/V31__add_equipment_options.sql diff --git a/as-talange-core/src/main/java/com/astalange/core/entity/Dotation.java b/as-talange-core/src/main/java/com/astalange/core/entity/Dotation.java index cba993b..37af909 100644 --- a/as-talange-core/src/main/java/com/astalange/core/entity/Dotation.java +++ b/as-talange-core/src/main/java/com/astalange/core/entity/Dotation.java @@ -21,6 +21,9 @@ public class Dotation { @Column(length = 10) private String taille; + @Column(length = 50) + private String couleur; + @Column(length = 50) private String flocage; @@ -47,6 +50,9 @@ public class Dotation { public String getTaille() { return taille; } public void setTaille(String taille) { this.taille = taille; } + public String getCouleur() { return couleur; } + public void setCouleur(String couleur) { this.couleur = couleur; } + public String getFlocage() { return flocage; } public void setFlocage(String flocage) { this.flocage = flocage; } diff --git a/as-talange-core/src/main/java/com/astalange/core/entity/Equipement.java b/as-talange-core/src/main/java/com/astalange/core/entity/Equipement.java index 1660a65..5ec1adc 100644 --- a/as-talange-core/src/main/java/com/astalange/core/entity/Equipement.java +++ b/as-talange-core/src/main/java/com/astalange/core/entity/Equipement.java @@ -20,6 +20,15 @@ public class Equipement { @Column(columnDefinition = "TEXT") private String description; + @Column(name = "gestion_sexe", nullable = false) + private boolean gestionSexe = false; + + @Column(name = "tailles_disponibles", length = 500) + private String taillesDisponibles; + + @Column(name = "couleurs_disponibles", length = 500) + private String couleursDisponibles; + @ManyToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "saison_id", nullable = false) @@ -39,6 +48,15 @@ public class Equipement { public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } + public boolean isGestionSexe() { return gestionSexe; } + public void setGestionSexe(boolean gestionSexe) { this.gestionSexe = gestionSexe; } + + public String getTaillesDisponibles() { return taillesDisponibles; } + public void setTaillesDisponibles(String taillesDisponibles) { this.taillesDisponibles = taillesDisponibles; } + + public String getCouleursDisponibles() { return couleursDisponibles; } + public void setCouleursDisponibles(String couleursDisponibles) { this.couleursDisponibles = couleursDisponibles; } + public Saison getSaison() { return saison; } public void setSaison(Saison saison) { this.saison = saison; } } diff --git a/as-talange-core/src/main/resources/db/migration/V31__add_equipment_options.sql b/as-talange-core/src/main/resources/db/migration/V31__add_equipment_options.sql new file mode 100644 index 0000000..b0d4fc5 --- /dev/null +++ b/as-talange-core/src/main/resources/db/migration/V31__add_equipment_options.sql @@ -0,0 +1,5 @@ +ALTER TABLE equipement ADD COLUMN gestion_sexe BOOLEAN DEFAULT FALSE NOT NULL; +ALTER TABLE equipement ADD COLUMN tailles_disponibles VARCHAR(500); +ALTER TABLE equipement ADD COLUMN couleurs_disponibles VARCHAR(500); + +ALTER TABLE dotation ADD COLUMN couleur VARCHAR(50); diff --git a/as-talange-web/src/main/java/com/astalange/web/controller/DotationController.java b/as-talange-web/src/main/java/com/astalange/web/controller/DotationController.java index 435b1aa..faf7068 100644 --- a/as-talange-web/src/main/java/com/astalange/web/controller/DotationController.java +++ b/as-talange-web/src/main/java/com/astalange/web/controller/DotationController.java @@ -168,12 +168,14 @@ public class DotationController { .orElseThrow(() -> new IllegalArgumentException("Invalid Dotation ID: " + id)); String taille = request.getParameter("taille_" + id); + String couleur = request.getParameter("couleur_" + id); String numero = request.getParameter("numero_" + id); String flocage = request.getParameter("flocage_" + id); String choisiParam = request.getParameter("choisi_" + id); String fourniParam = request.getParameter("fourni_" + id); if (taille != null) dotation.setTaille(taille); + if (couleur != null) dotation.setCouleur(couleur); if (numero != null) dotation.setNumero(numero); if (flocage != null) dotation.setFlocage(flocage); diff --git a/as-talange-web/src/main/resources/templates/adherents/form.html b/as-talange-web/src/main/resources/templates/adherents/form.html index 98d63e1..d73c043 100644 --- a/as-talange-web/src/main/resources/templates/adherents/form.html +++ b/as-talange-web/src/main/resources/templates/adherents/form.html @@ -354,17 +354,10 @@
Description
-
+
- Modèle Homme - Joueur - -
-
- + th:text="${adherent.sexe == 'FEMININ' ? 'Modèle Femme' : 'Modèle Homme'} + (${dot.equipement.nom == 'Maillot' or dot.equipement.nom == 'Short' or dot.equipement.nom == 'Chaussettes'} ? ' - ' + (${adherent.typeMaillot == 'GARDIEN' ? 'Gardien' : 'Joueur'}) : '')"> Modèle Homme
@@ -381,17 +374,43 @@
-
+
- +
+
+ + +
+ +
+ + +
+
+ + +
+
+ +
-
Description (ex: Maillot domicile officiel)
+
+

Options de déclinaison (facultatif)

+ +
+
+ + +
+
+ + +

Séparez les tailles par des virgules. Laissez vide si taille unique ou standard.

+
- - +
+ + +

Séparez les couleurs par des virgules. Laissez vide si couleur unique.

+
+
+
Annuler