// LATER put in a separate controller for only create & update requests
 @ModelAttribute("projet")
 public Projet initProjet(
     @RequestParam(value = "id", required = false) Long projetId,
     @RequestParam(value = "tdrId", required = false) Long tdrId) {
   if (projetId != null) {
     return projetService.getById(projetId);
   } else if (tdrId != null) {
     Projet projet = new Projet();
     projet.setStatus("created");
     Tdr tdr = tdrService.getById(tdrId);
     projet.setTdr(tdr);
     return projet;
   }
   return null;
 }
 @RequestMapping(method = RequestMethod.POST, value = "/projet/approve")
 public String approve(@Valid @ModelAttribute("projet") Projet projet, BindingResult result) {
   if (result.hasErrors()) {
     return "projets";
   }
   // projetService.approve(projet);
   projet.computeTotalBenef();
   projetService.update(projet);
   try {
     projet.setStatus("approved");
     projetService.update(projet);
     // tdrService.computeTdb(projet.getTdr());
     tdrService.computeTdb(tdrService.getById(projet.getTdr().getId()));
     tdrService.publish(projet.getTdr());
   } catch (Exception ex) {
     // TODO better error gestion
     ex.printStackTrace();
   }
   return "redirect:list?tdrId=" + projet.getTdr().getId();
 }