feat: implémentation de la gestion des saisons (UI, service, refactoring sidebar)

This commit is contained in:
2026-05-29 22:35:33 +02:00
parent dd31d73fed
commit a429e67133
27 changed files with 591 additions and 185 deletions
@@ -5,11 +5,13 @@ import com.astalange.core.entity.Categorie;
import com.astalange.core.entity.Licence;
import com.astalange.core.entity.Dotation;
import com.astalange.core.entity.Equipement;
import com.astalange.core.entity.Saison;
import com.astalange.core.repository.AdherentRepository;
import com.astalange.core.repository.CategorieRepository;
import com.astalange.core.repository.LicenceRepository;
import com.astalange.core.repository.DotationRepository;
import com.astalange.core.repository.EquipementRepository;
import com.astalange.core.repository.SaisonRepository;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
@@ -25,24 +27,26 @@ public class LicenceController {
private final LicenceRepository licenceRepository;
private final EquipementRepository equipementRepository;
private final DotationRepository dotationRepository;
private final SaisonRepository saisonRepository;
public LicenceController(AdherentRepository adherentRepository,
CategorieRepository categorieRepository,
LicenceRepository licenceRepository,
EquipementRepository equipementRepository,
DotationRepository dotationRepository) {
DotationRepository dotationRepository,
SaisonRepository saisonRepository) {
this.adherentRepository = adherentRepository;
this.categorieRepository = categorieRepository;
this.licenceRepository = licenceRepository;
this.equipementRepository = equipementRepository;
this.dotationRepository = dotationRepository;
this.saisonRepository = saisonRepository;
}
@PostMapping("/adherents/{id}/licences")
public String addLicence(
@PathVariable Long id,
@RequestParam Long categorieId,
@RequestParam String saison,
@RequestParam String etat,
@RequestParam(required = false) String numeroLicence) {
@@ -56,18 +60,21 @@ public class LicenceController {
Categorie categorie = categorieRepository.findById(categorieId)
.orElseThrow(() -> new IllegalArgumentException("Invalid Categorie ID"));
Saison saisonActive = saisonRepository.findByEstActiveTrue()
.orElseThrow(() -> new IllegalStateException("Aucune saison active trouvée"));
Licence licence = new Licence();
licence.setAdherent(adherent);
licence.setCategorie(categorie);
licence.setSaison(saison);
licence.setSaison(saisonActive);
licence.setEtat(etat);
licence.setNumeroLicence(numeroLicence);
licence = licenceRepository.save(licence);
// Auto-initialize dotations for all configured equipments
List<Equipement> equipements = equipementRepository.findAll();
// Auto-initialize dotations for all configured equipments of the active season
List<Equipement> equipements = equipementRepository.findBySaison(saisonActive);
for (Equipement eq : equipements) {
Dotation dotation = new Dotation();
dotation.setLicence(licence);
@@ -82,4 +89,27 @@ public class LicenceController {
return "redirect:/adherents/" + id + "/edit";
}
@PostMapping("/adherents/{adherentId}/licences/{licenceId}/update")
public String updateLicence(
@PathVariable Long adherentId,
@PathVariable Long licenceId,
@RequestParam Long categorieId,
@RequestParam String etat,
@RequestParam(required = false) String numeroLicence) {
Licence licence = licenceRepository.findById(licenceId)
.orElseThrow(() -> new IllegalArgumentException("Invalid Licence ID"));
Categorie categorie = categorieRepository.findById(categorieId)
.orElseThrow(() -> new IllegalArgumentException("Invalid Categorie ID"));
licence.setCategorie(categorie);
licence.setEtat(etat);
licence.setNumeroLicence(numeroLicence);
licenceRepository.save(licence);
return "redirect:/adherents/" + adherentId + "/edit";
}
}