bca84be16a
- 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.
87 lines
3.3 KiB
Java
87 lines
3.3 KiB
Java
package com.astalange.web.controller;
|
|
|
|
import com.astalange.core.entity.Dotation;
|
|
import com.astalange.core.repository.DotationRepository;
|
|
import org.springframework.stereotype.Controller;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.web.bind.annotation.PathVariable;
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
|
|
import java.util.List;
|
|
import jakarta.servlet.http.HttpServletRequest;
|
|
|
|
@Controller
|
|
public class DotationController {
|
|
|
|
private final DotationRepository dotationRepository;
|
|
|
|
public DotationController(DotationRepository dotationRepository) {
|
|
this.dotationRepository = dotationRepository;
|
|
}
|
|
|
|
@PostMapping("/dotations/{id}")
|
|
public String updateDotation(
|
|
@PathVariable Long id,
|
|
@RequestParam Long adherentId,
|
|
@RequestParam(required = false, defaultValue = "") String taille,
|
|
@RequestParam(required = false, defaultValue = "") String flocage,
|
|
@RequestParam(required = false, defaultValue = "") String numero,
|
|
@RequestParam(required = false) Boolean fourni,
|
|
@RequestParam(required = false) Boolean choisi) {
|
|
|
|
Dotation dotation = dotationRepository.findById(id)
|
|
.orElseThrow(() -> new IllegalArgumentException("Invalid Dotation ID: " + id));
|
|
|
|
dotation.setTaille(taille);
|
|
dotation.setFlocage(flocage);
|
|
dotation.setNumero(numero);
|
|
dotation.setFourni(fourni != null && fourni);
|
|
|
|
if (dotation.getLicence().getCategorie().isEquipementObligatoire(dotation.getEquipement().getId())) {
|
|
dotation.setChoisi(true);
|
|
} else {
|
|
dotation.setChoisi(choisi != null && choisi);
|
|
}
|
|
|
|
dotationRepository.save(dotation);
|
|
|
|
return "redirect:/adherents/" + adherentId + "/edit";
|
|
}
|
|
|
|
@Transactional
|
|
@PostMapping("/dotations/bulk")
|
|
public String bulkUpdateDotations(
|
|
@RequestParam Long adherentId,
|
|
@RequestParam("dotationIds") List<Long> dotationIds,
|
|
HttpServletRequest request) {
|
|
|
|
for (Long id : dotationIds) {
|
|
Dotation dotation = dotationRepository.findById(id)
|
|
.orElseThrow(() -> new IllegalArgumentException("Invalid Dotation ID: " + id));
|
|
|
|
String taille = request.getParameter("taille_" + id);
|
|
String numero = request.getParameter("numero_" + id);
|
|
String flocage = request.getParameter("flocage_" + id);
|
|
String choisiParam = request.getParameter("choisi_" + id);
|
|
String fourniParam = request.getParameter("fourni_" + id);
|
|
|
|
if (taille != null) dotation.setTaille(taille);
|
|
if (numero != null) dotation.setNumero(numero);
|
|
if (flocage != null) dotation.setFlocage(flocage);
|
|
|
|
if (dotation.getLicence().getCategorie().isEquipementObligatoire(dotation.getEquipement().getId())) {
|
|
dotation.setChoisi(true);
|
|
} else {
|
|
dotation.setChoisi(choisiParam != null);
|
|
}
|
|
|
|
dotation.setFourni(fourniParam != null);
|
|
|
|
dotationRepository.save(dotation);
|
|
}
|
|
|
|
return "redirect:/adherents/" + adherentId + "/edit";
|
|
}
|
|
}
|