89 lines
3.5 KiB
Java
89 lines
3.5 KiB
Java
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());
|
|
}
|
|
}
|
|
}
|