feat: add equipment duplication and name uniqueness validation
This commit is contained in:
+50
-6
@@ -33,34 +33,78 @@ public class EquipementController {
|
||||
|
||||
@GetMapping("/new")
|
||||
public String showCreateForm(Model model) {
|
||||
model.addAttribute("equipement", new Equipement());
|
||||
if (!model.containsAttribute("equipement")) {
|
||||
model.addAttribute("equipement", new Equipement());
|
||||
}
|
||||
return "parametrage/equipements_form";
|
||||
}
|
||||
|
||||
@GetMapping("/{id}/edit")
|
||||
public String showEditForm(@PathVariable Long id, Model model) {
|
||||
Equipement equipement = equipementRepository.findById(id)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Invalid equipment ID: " + id));
|
||||
model.addAttribute("equipement", equipement);
|
||||
if (!model.containsAttribute("equipement")) {
|
||||
Equipement equipement = equipementRepository.findById(id)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Invalid equipment ID: " + id));
|
||||
model.addAttribute("equipement", equipement);
|
||||
}
|
||||
return "parametrage/equipements_form";
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public String saveEquipement(@ModelAttribute("equipement") Equipement equipement) {
|
||||
public String saveEquipement(@ModelAttribute("equipement") Equipement equipement,
|
||||
org.springframework.web.servlet.mvc.support.RedirectAttributes redirectAttributes) {
|
||||
|
||||
Saison activeSaison;
|
||||
if (equipement.getId() == null) {
|
||||
Saison activeSaison = saisonRepository.findByEstActiveTrue()
|
||||
activeSaison = saisonRepository.findByEstActiveTrue()
|
||||
.orElseThrow(() -> new IllegalStateException("Aucune saison active trouvée"));
|
||||
equipement.setSaison(activeSaison);
|
||||
} else {
|
||||
Equipement existing = equipementRepository.findById(equipement.getId())
|
||||
.orElseThrow(() -> new IllegalArgumentException("Invalid equipment ID: " + equipement.getId()));
|
||||
equipement.setSaison(existing.getSaison());
|
||||
activeSaison = existing.getSaison();
|
||||
}
|
||||
|
||||
if (activeSaison != null) {
|
||||
for (Equipement e : equipementRepository.findBySaison(activeSaison)) {
|
||||
if (e.getNom().equalsIgnoreCase(equipement.getNom()) && (equipement.getId() == null || !e.getId().equals(equipement.getId()))) {
|
||||
redirectAttributes.addFlashAttribute("errorMessage", "Erreur : L'équipement '" + equipement.getNom() + "' existe déjà pour cette saison.");
|
||||
redirectAttributes.addFlashAttribute("equipement", equipement);
|
||||
return equipement.getId() == null ? "redirect:/equipements/new" : "redirect:/equipements/" + equipement.getId() + "/edit";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
equipementRepository.save(equipement);
|
||||
return "redirect:/equipements";
|
||||
}
|
||||
|
||||
@PostMapping("/{id}/duplicate")
|
||||
public String duplicateEquipement(@PathVariable Long id) {
|
||||
Equipement existing = equipementRepository.findById(id)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Invalid equipment ID: " + id));
|
||||
|
||||
Equipement duplicated = new Equipement();
|
||||
String newNom = existing.getNom() + " (dupliqué)";
|
||||
if (newNom.length() > 100) {
|
||||
newNom = newNom.substring(0, 100);
|
||||
}
|
||||
duplicated.setNom(newNom);
|
||||
duplicated.setReference(existing.getReference());
|
||||
duplicated.setDescription(existing.getDescription());
|
||||
duplicated.setGestionSexe(existing.isGestionSexe());
|
||||
duplicated.setTypePublic(existing.getTypePublic());
|
||||
duplicated.setTaillesDisponibles(existing.getTaillesDisponibles());
|
||||
duplicated.setCouleursDisponibles(existing.getCouleursDisponibles());
|
||||
duplicated.setHasFlocagePrenom(existing.isHasFlocagePrenom());
|
||||
duplicated.setHasFlocageInitiales(existing.isHasFlocageInitiales());
|
||||
duplicated.setHasFlocageNumero(existing.isHasFlocageNumero());
|
||||
duplicated.setSaison(existing.getSaison());
|
||||
|
||||
equipementRepository.save(duplicated);
|
||||
return "redirect:/equipements";
|
||||
}
|
||||
|
||||
@PostMapping("/{id}/delete")
|
||||
public String deleteEquipement(@PathVariable Long id) {
|
||||
Equipement equipement = equipementRepository.findById(id)
|
||||
|
||||
Reference in New Issue
Block a user