package com.astalange.web.controller; import com.astalange.core.entity.Educateur; import com.astalange.core.entity.Categorie; import com.astalange.core.entity.Equipe; import com.astalange.core.entity.Saison; import com.astalange.core.repository.EducateurRepository; import com.astalange.core.repository.CategorieRepository; import com.astalange.core.repository.EquipeRepository; import com.astalange.core.repository.SaisonRepository; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import java.util.List; @Controller @RequestMapping("/educateurs") public class EducateurController { private final EducateurRepository educateurRepository; private final CategorieRepository categorieRepository; private final EquipeRepository equipeRepository; private final SaisonRepository saisonRepository; public EducateurController(EducateurRepository educateurRepository, CategorieRepository categorieRepository, EquipeRepository equipeRepository, SaisonRepository saisonRepository) { this.educateurRepository = educateurRepository; this.categorieRepository = categorieRepository; this.equipeRepository = equipeRepository; this.saisonRepository = saisonRepository; } @GetMapping public String listEducateurs(Model model) { model.addAttribute("educateurs", educateurRepository.findAllWithCategorieAndEquipe()); return "parametrage/educateurs_list"; } @GetMapping("/new") public String showCreateForm(Model model) { model.addAttribute("educateur", new Educateur()); populateModelAttributes(model); return "parametrage/educateurs_form"; } @GetMapping("/{id}/edit") public String showEditForm(@PathVariable Long id, Model model) { Educateur educateur = educateurRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException("Invalid educator ID: " + id)); model.addAttribute("educateur", educateur); populateModelAttributes(model); return "parametrage/educateurs_form"; } @PostMapping public String saveEducateur(@ModelAttribute("educateur") Educateur educateur) { if (educateur.getCategorie() != null && educateur.getCategorie().getId() == null) { educateur.setCategorie(null); } if (educateur.getEquipe() != null && educateur.getEquipe().getId() == null) { educateur.setEquipe(null); } educateurRepository.save(educateur); return "redirect:/educateurs"; } @PostMapping("/{id}/delete") public String deleteEducateur(@PathVariable Long id) { Educateur educateur = educateurRepository.findById(id) .orElseThrow(() -> new IllegalArgumentException("Invalid educator ID: " + id)); educateurRepository.delete(educateur); return "redirect:/educateurs"; } private void populateModelAttributes(Model model) { Saison saisonActive = saisonRepository.findByEstActiveTrue().orElse(null); if (saisonActive != null) { model.addAttribute("categories", categorieRepository.findBySaison(saisonActive)); model.addAttribute("equipes", equipeRepository.findBySaison(saisonActive)); } else { model.addAttribute("categories", categorieRepository.findAll()); model.addAttribute("equipes", equipeRepository.findAllWithCategorie()); } } }