/** * Save the details of a projet * * @param map * @param tdrId * @return */ @RequestMapping(method = RequestMethod.POST, value = "/projet/save") public String save(@Valid @ModelAttribute("projet") Projet projet, BindingResult result) { if (result .hasErrors()) { // validation check, see // http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/ return "redirect:/projet/details/" + projet.getId(); } projet.computeTotalBenef(); projetService.update(projet); return "redirect:/projet/details/" + projet.getId(); }
// 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/add") public String add(@Valid @ModelAttribute("projet") Projet projet, BindingResult result) { if (result.hasErrors()) { if (projet != null) { // result.getModel().put("projet", projet); // for form return "redirect:newProjet?tdrId=" + projet.getTdr().getId(); // TODO should return "newProjet" but at next save then projet is null !?! } return "redirect:/tdr/list"; } // Tdr tdr = tdrService.getById(projet.getTdr().getId());projet.setTdr(tdr); // done by // initProjet() projet.computeTotalBenef(); projetService.create(projet); return "redirect:list?tdrId=" + projet.getTdr().getId(); }
@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(); }