feat: gestion des dotations equipements et historique des paiements
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
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.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
||||
@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) Boolean fourni) {
|
||||
|
||||
Dotation dotation = dotationRepository.findById(id)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Invalid Dotation ID: " + id));
|
||||
|
||||
dotation.setTaille(taille);
|
||||
dotation.setFlocage(flocage);
|
||||
dotation.setFourni(fourni != null && fourni);
|
||||
|
||||
dotationRepository.save(dotation);
|
||||
|
||||
return "redirect:/adherents/" + adherentId + "/edit";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.astalange.web.controller;
|
||||
|
||||
import com.astalange.core.entity.Equipement;
|
||||
import com.astalange.core.repository.EquipementRepository;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
@Controller
|
||||
@RequestMapping("/equipements")
|
||||
public class EquipementController {
|
||||
|
||||
private final EquipementRepository equipementRepository;
|
||||
|
||||
public EquipementController(EquipementRepository equipementRepository) {
|
||||
this.equipementRepository = equipementRepository;
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public String listEquipements(Model model) {
|
||||
model.addAttribute("equipements", equipementRepository.findAll());
|
||||
return "parametrage/equipements_list";
|
||||
}
|
||||
|
||||
@GetMapping("/new")
|
||||
public String showCreateForm(Model model) {
|
||||
model.addAttribute("equipement", new Equipement());
|
||||
return "parametrage/equipements_form";
|
||||
}
|
||||
|
||||
@GetMapping("/{id}/edit")
|
||||
public String showEditForm(@PathVariable Long id, Model model) {
|
||||
Equipement equipement = equipementRepository.findById(id)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Invalid equipment ID: " + id));
|
||||
model.addAttribute("equipement", equipement);
|
||||
return "parametrage/equipements_form";
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public String saveEquipement(@ModelAttribute("equipement") Equipement equipement) {
|
||||
if (equipement.getObligatoire() == null) {
|
||||
equipement.setObligatoire(false);
|
||||
}
|
||||
equipementRepository.save(equipement);
|
||||
return "redirect:/equipements";
|
||||
}
|
||||
|
||||
@PostMapping("/{id}/delete")
|
||||
public String deleteEquipement(@PathVariable Long id) {
|
||||
Equipement equipement = equipementRepository.findById(id)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Invalid equipment ID: " + id));
|
||||
equipementRepository.delete(equipement);
|
||||
return "redirect:/equipements";
|
||||
}
|
||||
}
|
||||
@@ -3,25 +3,39 @@ package com.astalange.web.controller;
|
||||
import com.astalange.core.entity.Adherent;
|
||||
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.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 org.springframework.stereotype.Controller;
|
||||
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;
|
||||
|
||||
@Controller
|
||||
public class LicenceController {
|
||||
|
||||
private final AdherentRepository adherentRepository;
|
||||
private final CategorieRepository categorieRepository;
|
||||
private final LicenceRepository licenceRepository;
|
||||
private final EquipementRepository equipementRepository;
|
||||
private final DotationRepository dotationRepository;
|
||||
|
||||
public LicenceController(AdherentRepository adherentRepository, CategorieRepository categorieRepository, LicenceRepository licenceRepository) {
|
||||
public LicenceController(AdherentRepository adherentRepository,
|
||||
CategorieRepository categorieRepository,
|
||||
LicenceRepository licenceRepository,
|
||||
EquipementRepository equipementRepository,
|
||||
DotationRepository dotationRepository) {
|
||||
this.adherentRepository = adherentRepository;
|
||||
this.categorieRepository = categorieRepository;
|
||||
this.licenceRepository = licenceRepository;
|
||||
this.equipementRepository = equipementRepository;
|
||||
this.dotationRepository = dotationRepository;
|
||||
}
|
||||
|
||||
@PostMapping("/adherents/{id}/licences")
|
||||
@@ -29,7 +43,8 @@ public class LicenceController {
|
||||
@PathVariable Long id,
|
||||
@RequestParam Long categorieId,
|
||||
@RequestParam String saison,
|
||||
@RequestParam String etat) {
|
||||
@RequestParam String etat,
|
||||
@RequestParam(required = false) String numeroLicence) {
|
||||
|
||||
Adherent adherent = adherentRepository.findById(id)
|
||||
.orElseThrow(() -> new IllegalArgumentException("Invalid Adherent ID"));
|
||||
@@ -41,8 +56,21 @@ public class LicenceController {
|
||||
licence.setCategorie(categorie);
|
||||
licence.setSaison(saison);
|
||||
licence.setEtat(etat);
|
||||
licence.setNumeroLicence(numeroLicence);
|
||||
|
||||
licenceRepository.save(licence);
|
||||
licence = licenceRepository.save(licence);
|
||||
|
||||
// Auto-initialize dotations for all configured equipments
|
||||
List<Equipement> equipements = equipementRepository.findAll();
|
||||
for (Equipement eq : equipements) {
|
||||
Dotation dotation = new Dotation();
|
||||
dotation.setLicence(licence);
|
||||
dotation.setEquipement(eq);
|
||||
dotation.setTaille("");
|
||||
dotation.setFlocage("");
|
||||
dotation.setFourni(false);
|
||||
dotationRepository.save(dotation);
|
||||
}
|
||||
|
||||
return "redirect:/adherents/" + id + "/edit";
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.astalange.web.controller;
|
||||
|
||||
import com.astalange.core.repository.PaiementRepository;
|
||||
import org.springframework.data.domain.Sort;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.Model;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
|
||||
@Controller
|
||||
public class PaiementsController {
|
||||
|
||||
private final PaiementRepository paiementRepository;
|
||||
|
||||
public PaiementsController(PaiementRepository paiementRepository) {
|
||||
this.paiementRepository = paiementRepository;
|
||||
}
|
||||
|
||||
@GetMapping("/paiements")
|
||||
public String listPaiements(Model model) {
|
||||
model.addAttribute("paiements", paiementRepository.findAll(Sort.by(Sort.Direction.DESC, "datePaiement", "id")));
|
||||
return "paiements/list";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user