package com.fp.frontend.controller.armas.parametros; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; import org.primefaces.event.SelectEvent; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.query.DtoQuery; import com.fp.dto.query.SubQuery; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgControlArmas; import com.fp.persistence.parmas.param.TarmTipoSancion; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; /** * Clase controladora del bean TarmTipoSancion. * * @author Christian Pazmino * @version 2.1 */ @SuppressWarnings("serial") @ManagedBean @ViewScoped public class DatosParaSancionesController extends AbstractController { /** * Lista de tipos de tramites a ser seleccionados por el usuario (Autorizacion, Permiso) */ private List tramiteList; /** * Lista de tipos de faltas a ser seleccionadados por el usuario (Leve, Grave, etc) */ private List tipoDeFaltaList; /** * Lista de tipos de sanciones a ser seleccionados por el usuario (Suspencion, Decomiso, etc) */ private List sancionList; /** * Lista de periodos en dias que durara la sancion (180 dias, 270 dias, etc) */ private List tiempoList; /** * Codigo de la clase seleccionada por el usuario */ private String claseFiltroStr; /** * Variable que indica si el usuario esta negado para continuar en la pantalla */ private Boolean esEdicionBln; /** * Constante usada para referirse al catalogo de tipo de falta */ private final String TIPOFALTACODIGO = "TIPODEFALTA"; /** * Constante usada para referirse al catalogo de vigencia en dias */ private final String TIEMPOCODIGO = "VIGENCIADIAS"; /** * Constante usada para referirse al catalogo de sanciones */ private final String SANCIONCODIGO = "SANCION"; /** * Constante usada para referirse al catalogo de tipo autorizacion */ private final String TRAMITECODIGO = "TIPOAUTORIZACION"; public DatosParaSancionesController() throws Exception { super(TarmTipoSancion.class); } @PostConstruct private void postconstruct() { this.init(); record = new TarmTipoSancion(); tipoDeFaltaList = CatalogDetailController.find("TIPODEFALTA"); tramiteList = CatalogFilterLovController.findTramiteSancion(); tiempoList = CatalogDetailController.find("VIGENCIADIAS"); sancionList = CatalogDetailController.find("SANCION"); esEdicionBln = Boolean.FALSE; super.startQuery(); } /** * Incializa el controlador, cuando se esta utilizando una pagina que utliza * el controlador. */ private void init() { try { recperpage = 15; // Cambiar al # reg a mirar. lrecord = new ArrayList<>(); beanalias = "DATOSPARASANCION"; } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Metodo utilizado al escoger tipo de falta */ public void changeTipoFalta() { for (TgeneCatalogDetail r : tipoDeFaltaList) { if (r.getPk().getCatalog().compareTo(record.getTipofalta()) == 0) { record.put("ntipoFalta", r.getDescription()); break; } } record.setTipofaltacodigo(TIPOFALTACODIGO); } /** * Metodo utilizado al escoger tramite */ public void changeTramite() { for (TgeneCatalogDetail r : tramiteList) { if (r.getPk().getCatalog().compareTo(record.getTramite()) == 0) { record.put("ntramite", r.getDescription()); break; } } record.setTramitecodigo(TRAMITECODIGO); } /** * Metodo utilizado al escoger sancion */ public void changeSancion() { for (TgeneCatalogDetail r : sancionList) { if (r.getPk().getCatalog().compareTo(record.getSancion()) == 0) { record.put("nsancion", r.getDescription()); break; } } record.setSancioncodigo(SANCIONCODIGO); } /** * Metodo utilizado al escoger tiempo */ public void changeTiempo() { for (TgeneCatalogDetail r : tiempoList) { if (r.getPk().getCatalog().compareTo(record.getTiempo()) == 0) { record.put("ntiempo", r.getDescription()); break; } } record.setTiempocodigo(TIEMPOCODIGO); } /** * Crea una instancia de TgeneTransactionProcess y marca el registro como * nuevo. * * @throws Exception */ @Override public void create() throws Exception { super.create(); // if(!esEdicionBln){ // record.setNumeropregunta(null); // }else{ // record.setNumeropregunta(record.getNumeropregunta()); // } esEdicionBln = Boolean.FALSE; super.addField("claseDescriptionD", null); super.addField("faltaDescriptionD", null); } @SuppressWarnings("unchecked") @Override public void querydatabase() { try { DtoQuery dto = super.getDtoQuery(true); dto.setOrderby("t.pk"); // Subquery SubQuery subqueryClase = new SubQuery("TgeneCatalogDetail", "description", "nclase", "i.pk.catalog = t.clase and i.pk.catalogcode = t.clasecodigo"); dto.addSubQuery(subqueryClase); SubQuery subqueryFalta = new SubQuery("TgeneCatalogDetail", "description", "nfalta", "i.pk.catalog = t.falta and i.pk.catalogcode = t.faltacodigo"); dto.addSubQuery(subqueryFalta); SubQuery subqueryTipoFalta = new SubQuery("TgeneCatalogDetail", "description", "ntipoFalta", "i.pk.catalog = t.tipofalta and i.pk.catalogcode = t.tipofaltacodigo"); dto.addSubQuery(subqueryTipoFalta); SubQuery subqueryTramite = new SubQuery("TgeneCatalogDetail", "description", "ntramite", "i.pk.catalog = t.tramite and i.pk.catalogcode = t.tramitecodigo"); dto.addSubQuery(subqueryTramite); SubQuery subquerySancion = new SubQuery("TgeneCatalogDetail", "description", "nsancion", "i.pk.catalog = t.sancion and i.pk.catalogcode = t.sancioncodigo"); dto.addSubQuery(subquerySancion); SubQuery subqueryTiempo = new SubQuery("TgeneCatalogDetail", "description", "ntiempo", "i.pk.catalog = t.tiempo and i.pk.catalogcode = t.tiempocodigo"); dto.addSubQuery(subqueryTiempo); HashMap mtables = new HashMap(); mtables.put(beanalias, dto); // permite adicionar mas de una tabla. Request request = callerhelper.getRequest(); request.setQueryTables(mtables); Response resp = callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { lrecord = new ArrayList(); MessageHelper.setMessageError(resp); } else { lrecord = (List) resp.get(beanalias); super.postQuery(lrecord); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void save() { try { DtoSave dtosave = super.getDtoSave(); if(!dtosave.pendingProcess()){ return; } dtosave.setReturnpk(true); // Para que el core devuelva el pk de los // registros nuevos. HashMap msave = new HashMap(); Request request = callerhelper.getRequest(); msave.put(beanalias, dtosave); // adicionar metadata de // mantenimiento para cada tabla. request.setSaveTables(msave); Response resp = callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); MessageHelper.setMessageInfo(resp); } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } @Override public void postCommit(Response response) throws Exception { super.postCommitGeneric(response, beanalias); } /** * Metodo usado para abrir el dialogo de falta en de la pantalla crear/editar */ public void openFaltaDialogLov() { try { if(this.record.getClase()!=null){ Map> params = new HashMap<>(); //Codigo de catalogcode List lcatalogcode = new ArrayList<>(); lcatalogcode.add("FALTA"); params.put("catalogcode", lcatalogcode); //tITULO DEL LOV List ltituloLOV = new ArrayList<>(); ltituloLOV.add("lov_falta"); params.put("tituloLOV", ltituloLOV); //Filtro List lfiltro = new ArrayList<>(); if(this.record.getClase().equals("0010000001")||this.record.getClase().equals("0010000002")){ //Filtro para armas de fuego y municiones lfiltro.add("t.legalcode = 'ARMASYMUNICIONES'"); }// else if(this.record.getClase().equals("0010000003")||this.record.getClase().equals("0010000007")){ //Filtro para explosivos y pirotecnicos lfiltro.add("t.legalcode = 'EXPLOSIVOSYPIROTECNICOS'"); } else if(this.record.getClase().equals("0010000004")){ //Filtro para accesorios lfiltro.add("t.legalcode = 'ACCESORIOS'"); } else if(this.record.getClase().equals("0010000006")){ //Filtro para accesorios lfiltro.add("t.legalcode = 'ACCESORIOS'"); } params.put("filtro", lfiltro); CatalogFilterLovController.openLov(params); //ClaseLovController.openLov(params); } else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionClase")); } } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Metodo de consulta de datos para sanciones segun la clase pasada como parametro */ public static List find(String clase) { try { DatosParaSancionesController cc = new DatosParaSancionesController(); cc.init(); cc.recperpage = 300; cc.addFilter("clase", clase); cc.querydatabase(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord; } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } /** * Metodo de consulta de dato para sancion segun la clave primaria pasada como parametro */ public static TarmTipoSancion findxPk(String pk) { try { DatosParaSancionesController cc = new DatosParaSancionesController(); cc.init(); cc.recperpage = 300; cc.addFilter("pk", pk); cc.querydatabase(); if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { return cc.lrecord.get(0); } return null; } catch (Throwable e) { MessageHelper.setMessageError(e); return null; } } /** * Metodo usado para abrir el dialogo de seleccionar falta en de la pantalla principal */ public void openFaltaLov() { try { if(claseFiltroStr!=null){ Map> params = new HashMap<>(); //Codigo de catalogcode List lcatalogcode = new ArrayList<>(); lcatalogcode.add("FALTA"); params.put("catalogcode", lcatalogcode); //tITULO DEL LOV List ltituloLOV = new ArrayList<>(); ltituloLOV.add("lov_falta"); params.put("tituloLOV", ltituloLOV); //Filtro List lfiltro = new ArrayList<>(); if(claseFiltroStr.equals("0010000001")||claseFiltroStr.equals("0010000002")){ //Filtro para armas de fuego y municiones lfiltro.add("t.legalcode = 'ARMASYMUNICIONES'"); }// else if(claseFiltroStr.equals("0010000003")||claseFiltroStr.equals("0010000007")){ //Filtro para explosivos y pirotecnicos lfiltro.add("t.legalcode = 'EXPLOSIVOSYPIROTECNICOS'"); } else if(claseFiltroStr.equals("0010000004")){ //Filtro para accesorios lfiltro.add("t.legalcode = 'ACCESORIOS'"); } else if(claseFiltroStr.equals("0010000006")){ //Filtro para accesorios lfiltro.add("t.legalcode = 'ACCESORIOS'"); } params.put("filtro", lfiltro); CatalogFilterLovController.openLov(params); //ClaseLovController.openLov(params); } else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionClase")); } } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Metodo usado para completar acciones al cerrar el dialogo seleccionar falta de la pantalla principal */ public void onReturnFaltaLov(SelectEvent event) throws Exception { TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); super.addFilter("falta", t.getPk().getCatalog()); super.addFilter("faltacodigo", t.getPk().getCatalogcode()); super.addField("faltaDescription", t.getDescription()); this.query(); } /** * Metodo usado para completar acciones al cerrar el dialogo seleccionar falta de la pantalla crear/editar */ public void onReturnFaltaDialogLov(SelectEvent event) throws Exception { TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); super.addField("faltaDescriptionD", t.getDescription()); this.record.setFalta(t.getPk().getCatalog()); this.record.setFaltacodigo(t.getPk().getCatalogcode()); record.put("nfalta", t.getDescription()); } /** * Metodo usado para abrir el dialogo de seleccionar clase en de la pantalla principal */ public void openClaseLov() { try { Map> params = new HashMap<>(); //Codigo de catalogcode List lcatalogcode = new ArrayList<>(); lcatalogcode.add("CLASE"); params.put("catalogcode", lcatalogcode); //tITULO DEL LOV List ltituloLOV = new ArrayList<>(); ltituloLOV.add("lvh_clase"); params.put("tituloLOV", ltituloLOV); //Filtro // List lfiltro = new ArrayList<>(); // lfiltro.add("t.pk.catalog in ('0010000001','0010000002','0010000003','0010000007','0010000004','0010000006')"); // params.put("filtro", lfiltro); CatalogFilterLovController.openLov(params); } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Metodo usado para completar acciones al cerrar el dialogo seleccionar clase de la pantalla principal */ public void onReturnClaseLov(SelectEvent event) throws Exception { TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); claseFiltroStr = t.getPk().getCatalog(); super.addFilter("clase", t.getPk().getCatalog()); super.addFilter("clasecodigo", t.getPk().getCatalogcode()); super.addField("claseDescription", t.getDescription()); this.query(); } /** * Metodo usado para completar acciones al cerrar el dialogo seleccionar clase de la pantalla crear/editar */ public void onReturnClaseDialogLov(SelectEvent event) throws Exception { TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); super.addField("claseDescriptionD", t.getDescription()); super.addField("faltaDescriptionD", null); record.setFalta(null); this.record.setClase(t.getPk().getCatalog()); this.record.setClasecodigo(t.getPk().getCatalogcode()); record.put("nclase", t.getDescription()); } @Override public void update() throws Exception { if(record.getClase()!=null){ if(record.getFalta()!=null){ super.update(); } else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_faltaRequerido")); } } else{ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_claseRequerido")); } } /** * Metodo que actualiza las descripciones seleccionadas en el dialogo crear/editar a la variable record y marca una bandera ser edicion */ public void actualizar(){ esEdicionBln = Boolean.TRUE; super.addField("claseDescriptionD", record.get("nclase")); super.addField("faltaDescriptionD", record.get("nfalta")); } public List getTramiteList() { return tramiteList; } public void setTramiteList(List tramiteList) { this.tramiteList = tramiteList; } public List getTipoDeFaltaList() { return tipoDeFaltaList; } public void setTipoDeFaltaList(List tipoDeFaltaList) { this.tipoDeFaltaList = tipoDeFaltaList; } public List getSancionList() { return sancionList; } public void setSancionList(List sancionList) { this.sancionList = sancionList; } public List getTiempoList() { return tiempoList; } public void setTiempoList(List tiempoList) { this.tiempoList = tiempoList; } public Boolean getEsEdicionBln() { return esEdicionBln; } public void setEsEdicionBln(Boolean esEdicionBln) { this.esEdicionBln = esEdicionBln; } public String getClaseFiltroStr() { return claseFiltroStr; } public void setClaseFiltroStr(String claseFiltroStr) { this.claseFiltroStr = claseFiltroStr; } }