Refactor: Move equipment price and mandatory status to Categorie relationship
AS Talange CI/CD Pipeline / Build & Run Unit Tests (push) Successful in 3m7s
AS Talange CI/CD Pipeline / Build & Run in Docker Container (push) Successful in 3m34s

- Created CategorieEquipement entity to act as a join table between Category and Equipment.
- Moved 'obligatoire' and 'prix' (formerly prixContribution) fields from Equipement to the new CategorieEquipement entity.
- Added Flyway migrations V14 and V15 to update the database schema and migrate existing data.
- Updated Categorie UI to use a select dropdown and price input for managing category-specific equipment configurations.
- Replaced 'equipement.obligatoire' and 'equipement.prixContribution' calls with their new category-level equivalents in logic and templates.
- Updated pricing calculation in Licence entity to source prices dynamically from the Categorie configuration.
- Updated Dotation generation logic to sync with category requirements automatically.
This commit is contained in:
2026-06-11 22:57:16 +02:00
parent 1a4ff6fdac
commit bca84be16a
17 changed files with 351 additions and 59 deletions
@@ -1,7 +1,9 @@
package com.astalange.web.controller;
import com.astalange.core.entity.Equipement;
import com.astalange.core.entity.Saison;
import com.astalange.core.repository.EquipementRepository;
import com.astalange.core.repository.SaisonRepository;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
@@ -11,9 +13,11 @@ import org.springframework.web.bind.annotation.*;
public class EquipementController {
private final EquipementRepository equipementRepository;
private final SaisonRepository saisonRepository;
public EquipementController(EquipementRepository equipementRepository) {
public EquipementController(EquipementRepository equipementRepository, SaisonRepository saisonRepository) {
this.equipementRepository = equipementRepository;
this.saisonRepository = saisonRepository;
}
@GetMapping
@@ -38,8 +42,15 @@ public class EquipementController {
@PostMapping
public String saveEquipement(@ModelAttribute("equipement") Equipement equipement) {
if (equipement.getObligatoire() == null) {
equipement.setObligatoire(false);
if (equipement.getId() == null) {
Saison 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());
}
equipementRepository.save(equipement);
return "redirect:/equipements";