/** * */ package net.conselldemallorca.helium.webapp.mvc; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import net.conselldemallorca.helium.core.model.hibernate.Consulta; import net.conselldemallorca.helium.core.model.hibernate.ConsultaCamp; import net.conselldemallorca.helium.core.model.hibernate.ConsultaCamp.TipusConsultaCamp; import net.conselldemallorca.helium.core.model.hibernate.Entorn; import net.conselldemallorca.helium.core.model.hibernate.ExpedientTipus; import net.conselldemallorca.helium.core.model.service.DissenyService; import net.conselldemallorca.helium.core.model.service.PermissionService; import net.conselldemallorca.helium.webapp.mvc.util.BaseController; import net.conselldemallorca.helium.webapp.v3.helper.SessionHelper; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.validation.BindingResult; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.support.SessionStatus; /** * Controlador per la gestiĆ³ dels camps de les consultes * * @author Limit Tecnologies <limit@limit.es> */ @Controller public class ExpedientTipusConsultaCampController extends BaseController { private DissenyService dissenyService; @Autowired public ExpedientTipusConsultaCampController( DissenyService dissenyService, PermissionService permissionService) { this.dissenyService = dissenyService; } @ModelAttribute("command") public ConsultaCamp populateCommand( HttpServletRequest request) { return new ConsultaCamp(); } @ModelAttribute("expedientTipus") public ExpedientTipus populateExpedientTipus( @RequestParam(value = "expedientTipusId", required = false) Long id) { if (id != null) { return dissenyService.getExpedientTipusById(id); } return null; } @RequestMapping(value = "/expedientTipus/consultaCamps", method = RequestMethod.GET) public String get( HttpServletRequest request, @RequestParam(value = "id", required = true) Long id, @RequestParam(value = "tipus", required = true) TipusConsultaCamp tipus, @RequestParam(value = "expedientTipusId", required = true) Long expedientTipusId, ModelMap model) { Entorn entorn = getEntornActiu(request); if (entorn != null) { Consulta consulta = dissenyService.getConsultaById(id); model.addAttribute("llistat", dissenyService.findCampsConsulta(id, tipus)); model.addAttribute("camps", dissenyService.findCampsPerCampsConsulta( id, tipus, false)); model.addAttribute("consulta", consulta); model.addAttribute( "definicionsProces", dissenyService.findDarreresAmbExpedientTipusEntorn( entorn.getId(), consulta.getExpedientTipus().getId(), true)); return "expedientTipus/consultaCamps"; } else { missatgeError(request, getMessage("error.no.entorn.selec") ); return "redirect:/index.html"; } } @RequestMapping(value = "/expedientTipus/consultaCamps", method = RequestMethod.POST) public String getForm( HttpServletRequest request, @RequestParam(value = "id", required = true) Long id, @RequestParam(value = "tipus", required = true) TipusConsultaCamp tipus, @RequestParam(value = "expedientTipusId", required = true) Long expedientTipusId, @RequestParam(value = "submit", required = false) String submit, @ModelAttribute("command") ConsultaCamp command, BindingResult result, SessionStatus status, HttpSession session, ModelMap model) { Entorn entorn = getEntornActiu(request); if (entorn != null) { if (("submit".equals(submit)) || (submit.length() == 0)) { command.setId(null); command.setTipus(tipus); command.setConsulta(dissenyService.getConsultaById(id)); try { dissenyService.createConsultaCamp(command); session.removeAttribute(SessionHelper.VARIABLE_FILTRE_CONSULTA_TIPUS + id); missatgeInfo(request, getMessage("info.camp.consulta.afegit") ); status.setComplete(); } catch (Exception ex) { missatgeError(request, getMessage("error.proces.peticio"), ex.getLocalizedMessage()); logger.error("No s'ha pogut afegir el camp a la consulta", ex); } return "redirect:/expedientTipus/consultaCamps.html?id=" + id + "&tipus=" + tipus + "&expedientTipusId=" + expedientTipusId; } else { return "redirect:/expedientTipus/consultaLlistat.html?expedientTipusId=" + expedientTipusId; } } else { missatgeError(request, getMessage("error.no.entorn.selec") ); return "redirect:/index.html"; } } @RequestMapping(value = "/expedientTipus/consultaCampsDelete") public String deleteAction( HttpServletRequest request, @RequestParam(value = "id", required = true) Long id, @RequestParam(value = "consultaId", required = true) Long consultaId, @RequestParam(value = "tipus", required = true) TipusConsultaCamp tipus, @RequestParam(value = "expedientTipusId", required = true) Long expedientTipusId, HttpSession session) { Entorn entorn = getEntornActiu(request); if (entorn != null) { try { dissenyService.deleteConsultaCamp(id); session.removeAttribute(SessionHelper.VARIABLE_FILTRE_CONSULTA_TIPUS + consultaId); missatgeInfo(request, getMessage("info.camp.consulta.esborrat") ); } catch (Exception ex) { missatgeError(request, getMessage("error.esborrar.camp.consulta"), ex.getLocalizedMessage()); logger.error("No s'ha pogut esborrar el registre", ex); } return "redirect:/expedientTipus/consultaCamps.html?id=" + consultaId + "&tipus=" + tipus + "&expedientTipusId=" + expedientTipusId; } else { missatgeError(request, getMessage("error.no.entorn.selec") ); return "redirect:/index.html"; } } @RequestMapping(value = "/expedientTipus/consultaCampFiltrePujar") public String pujarCamp( HttpServletRequest request, @RequestParam(value = "id", required = true) Long id, @RequestParam(value = "tipus", required = true) TipusConsultaCamp tipus, @RequestParam(value = "consultaId", required = true) Long consultaId, @RequestParam(value = "expedientTipusId", required = true) Long expedientTipusId) { Entorn entorn = getEntornActiu(request); if (entorn != null) { try { dissenyService.goUpConsultaCamp(id); } catch (Exception ex) { missatgeError(request, getMessage("error.canviar.ordre.camp.consulta"), ex.getLocalizedMessage()); logger.error("No s'ha pogut canviar l'ordre del camp de la consulta", ex); } return "redirect:/expedientTipus/consultaCamps.html?id=" + consultaId + "&tipus=" + tipus + "&expedientTipusId=" + expedientTipusId; } else { missatgeError(request, getMessage("error.no.entorn.selec") ); return "redirect:/index.html"; } } @RequestMapping(value = "/expedientTipus/consultaCampFiltreBaixar") public String baixarCamp( HttpServletRequest request, @RequestParam(value = "id", required = true) Long id, @RequestParam(value = "tipus", required = true) TipusConsultaCamp tipus, @RequestParam(value = "consultaId", required = true) Long consultaId, @RequestParam(value = "expedientTipusId", required = true) Long expedientTipusId) { Entorn entorn = getEntornActiu(request); if (entorn != null) { try { dissenyService.goDownConsultaCamp(id); } catch (Exception ex) { missatgeError(request, getMessage("error.canviar.ordre.camp.consulta"), ex.getLocalizedMessage()); logger.error("No s'ha pogut canviar l'ordre del camp de la consulta", ex); } return "redirect:/expedientTipus/consultaCamps.html?id=" + consultaId + "&tipus=" + tipus + "&expedientTipusId=" + expedientTipusId; } else { missatgeError(request, getMessage("error.no.entorn.selec") ); return "redirect:/index.html"; } } @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor( ExpedientTipus.class, new ExpedientTipusTypeEditor(dissenyService)); } private static final Log logger = LogFactory.getLog(ExpedientTipusConsultaCampController.class); }