feat: modification et suppression des paiements avec validation dynamique
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 2m53s

This commit is contained in:
2026-05-31 02:44:00 +02:00
parent 52fbd5fcf8
commit e39921f049
3 changed files with 220 additions and 11 deletions
@@ -57,4 +57,56 @@ public class PaiementController {
return "redirect:/adherents/" + adherentId + "/edit";
}
@PostMapping("/paiements/{id}/update")
public String updatePaiement(
@PathVariable Long id,
@RequestParam BigDecimal montant,
@RequestParam @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate datePaiement,
@RequestParam Long modePaiementId,
@RequestParam(required = false) String redirect) {
Paiement paiement = paiementRepository.findById(id)
.orElseThrow(() -> new IllegalArgumentException("Invalid Paiement ID"));
ModePaiement mode = modePaiementRepository.findById(modePaiementId)
.orElseThrow(() -> new IllegalArgumentException("Invalid ModePaiement ID"));
Licence licence = paiement.getLicence();
// Validation basique pour ne pas dépasser le montant total de la licence
BigDecimal maxAmount = licence.getResteAPayer().add(paiement.getMontant());
if (montant.compareTo(maxAmount) > 0) {
montant = maxAmount;
}
if (montant.compareTo(BigDecimal.ZERO) > 0) {
paiement.setModePaiement(mode);
paiement.setMontant(montant);
paiement.setDatePaiement(datePaiement);
paiementRepository.save(paiement);
}
if (redirect != null && !redirect.isEmpty()) {
return "redirect:" + redirect;
}
return "redirect:/adherents/" + licence.getAdherent().getId() + "/edit";
}
@PostMapping("/paiements/{id}/delete")
public String deletePaiement(
@PathVariable Long id,
@RequestParam(required = false) String redirect) {
Paiement paiement = paiementRepository.findById(id)
.orElseThrow(() -> new IllegalArgumentException("Invalid Paiement ID"));
Long adherentId = paiement.getLicence().getAdherent().getId();
paiementRepository.delete(paiement);
if (redirect != null && !redirect.isEmpty()) {
return "redirect:" + redirect;
}
return "redirect:/adherents/" + adherentId + "/edit";
}
}