feat: modification et suppression des paiements avec validation dynamique
This commit is contained in:
@@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user