feat: add category duplication functionality

This commit is contained in:
2026-07-07 21:54:38 +02:00
parent 29f9dc3bc2
commit a7c5b23198
4 changed files with 81 additions and 3 deletions
@@ -36,7 +36,9 @@ public class CategorieController {
@GetMapping("/new")
public String showCreateForm(Model model) {
model.addAttribute("categorie", new Categorie());
if (!model.containsAttribute("categorie")) {
model.addAttribute("categorie", new Categorie());
}
Saison activeSaison = saisonRepository.findByEstActiveTrue().orElse(null);
model.addAttribute("allEquipements", activeSaison != null ? equipementRepository.findBySaison(activeSaison) : List.of());
return "parametrage/categories_form";
@@ -59,7 +61,26 @@ public class CategorieController {
@PostMapping
public String saveCategorie(@ModelAttribute("categorie") Categorie categorie,
jakarta.servlet.http.HttpServletRequest request) {
jakarta.servlet.http.HttpServletRequest request,
org.springframework.web.servlet.mvc.support.RedirectAttributes redirectAttributes) {
Saison activeSaison;
if (categorie.getId() == null) {
activeSaison = saisonRepository.findByEstActiveTrue().orElse(null);
} else {
Categorie existing = categorieRepository.findById(categorie.getId()).orElse(null);
activeSaison = existing != null ? existing.getSaison() : null;
}
if (activeSaison != null) {
for (Categorie c : categorieRepository.findBySaison(activeSaison)) {
if (c.getNom().equalsIgnoreCase(categorie.getNom()) && (categorie.getId() == null || !c.getId().equals(categorie.getId()))) {
redirectAttributes.addFlashAttribute("errorMessage", "Erreur : La catégorie '" + categorie.getNom() + "' existe déjà pour cette saison.");
redirectAttributes.addFlashAttribute("categorie", categorie);
return categorie.getId() == null ? "redirect:/categories/new" : "redirect:/categories/" + categorie.getId() + "/edit";
}
}
}
java.util.Map<Long, com.astalange.core.service.CategorieService.EquipementConfig> configs = new java.util.HashMap<>();
@@ -93,4 +114,10 @@ public class CategorieController {
categorieRepository.delete(categorie);
return "redirect:/categories";
}
@PostMapping("/{id}/duplicate")
public String duplicateCategorie(@PathVariable Long id) {
categorieService.duplicateCategorie(id);
return "redirect:/categories";
}
}