package com.fp.frontend.controller.armas.solicitud; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.FacesContext; import org.primefaces.event.SelectEvent; import com.fp.dto.AbstractDataTransport; import com.fp.dto.Request; import com.fp.dto.Response; import com.fp.dto.query.DtoQuery; import com.fp.dto.save.DtoSave; import com.fp.frontend.controller.AbstractController; import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; import com.fp.frontend.controller.pcustomer.PersonAddressController; import com.fp.frontend.controller.pcustomer.PersonDetailController; import com.fp.frontend.controller.pcustomer.PersonPhoneController; import com.fp.frontend.controller.pcustomer.lov.PersonLovController; import com.fp.frontend.controller.pgeneral.gene.CantonController; import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; import com.fp.frontend.controller.pgeneral.gene.CityController; import com.fp.frontend.controller.pgeneral.gene.ParametersController; import com.fp.frontend.controller.pgeneral.gene.ProvinceController; import com.fp.frontend.helper.MessageHelper; import com.fp.frontend.utility.MsgControlArmas; import com.fp.persistence.parmas.param.TarmCentroControl; import com.fp.persistence.parmas.param.TarmCentroControlJur; import com.fp.persistence.parmas.soli.TarmArmas; import com.fp.persistence.parmas.soli.TarmDecomisoArma; import com.fp.persistence.pcustomer.gene.TcustPersonAddress; import com.fp.persistence.pcustomer.gene.TcustPersonDetail; import com.fp.persistence.pcustomer.gene.TcustPersonPhone; import com.fp.persistence.pgeneral.gene.TgeneCanton; import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; import com.fp.persistence.pgeneral.gene.TgeneCity; import com.fp.persistence.pgeneral.gene.TgeneParameters; import com.fp.persistence.pgeneral.gene.TgeneProvince; import com.fp.persistence.pgeneral.safe.TsafeUserDetail; /** * Clase controladora para el manejo de las custodais temporales del aeropuerto. * * @author C.P. * @version 2.1 */ @SuppressWarnings("serial") @ManagedBean @ViewScoped public class CustodiaTempAeropuertoController extends AbstractController { /** * Constructor * @throws Exception */ public CustodiaTempAeropuertoController() throws Exception { super(AbstractDataTransport.class); } /** * Controlador que maneja la custodiaTemporalController */ @ManagedProperty(value = "#{custodiaTemporalController}") private CustodiaTemporalController custodiaTemporalController; /** * Controlador que maneja armas */ @ManagedProperty(value = "#{registroArmController}") private RegistroArmController registroArmController; /** * Controlador que maneja armas */ @ManagedProperty(value = "#{armasController}") private ArmasController armasController; /** * Controlador que maneja TarmDecomisoArma */ @ManagedProperty(value = "#{decomisoArmaController}") private DecomisoArmaController decomisoArmaController; /** * Atributo para la lista de objetos TgeneProvince */ private List lprovinces; /** * Atributo para la lista de objetos TgeneProvince */ private List lcantones; /** * Atributo para la lista de objetos TgeneProvince */ private List lcities; /** * Atributo para la lista de objetos TgeneProvince */ private List lprovincesdest; /** * Atributo para la lista de objetos TgeneProvince */ private List lcantonesdest; /** * Atributo para la lista de objetos TgeneProvince */ private List lcitiesdest; /** * Atributo del tipo de registro es decomiso */ private TgeneCatalogDetail tipoProceso; /** * Atributo del tipo de aerolineas */ private List aerolineas; /** * Atributo del tipo de aeropuertos origen */ private List aeropuertosorigen; /** * Atributo del tipo de aeropuertos destino */ private List aeropuertosdestino; /** * */ private List lEraser; /** * Arma seleccionada para el decomiso */ private TarmArmas armaSeleccionada; /** * Atributo para setear el centro de control */ private TarmCentroControl centroControl; /** * Atributo para setear el usuario logeado */ private TsafeUserDetail tsafeUserDetail; /** * Codigo del catalogo de PHONETYPE telefono fijo */ private String codigoTelefonoFijo; /** * Codigo del catalogo de ESTADOARM */ private String codigoEntregadoEstado; /** * Atributo para asignar el detalle de la custodia temporal */ private TarmDecomisoArma tarmDecomisoArmaBuscado; private Boolean btn=Boolean.FALSE; /** * Metodo invocado despues de instanciar el controlador */ @PostConstruct private void postconstruct() { this.init(); // Inicializa autoconsulta super.startQuery(); } /** * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. */ public void init() { try { this.recperpage = 15; this.lrecord = new ArrayList<>(); this.beanalias = "CUSTODIATEMPORALAER"; codigoTelefonoFijo=codigos("CODIGO.PHONE.FIJO"); codigoEntregadoEstado =codigos("COD.ENTREGADO.ESTADO"); String proceso=codigos("COD.CUSTODIA.TEMPORAL.TIPOPRO"); tipoProceso = CatalogDetailController.findxCodigoCodcatalogo(proceso, "TIPOREGISTRO"); //aerolinea aerolineas=CatalogDetailController.find("AEROLINEAS"); //aeropuertos aeropuertosorigen=CatalogDetailController.find("AEROPUERTOS"); aeropuertosdestino=CatalogDetailController.find("AEROPUERTOS"); lprovinces = ProvinceController.find("EC"); lprovincesdest = ProvinceController.find("EC"); this.lEraser = new ArrayList(); // centro de control obtenerCentroControl(); custodiaTemporalController.create(); // seteo de variables custodiaTemporalController.getRecord().setFechacustodios(new java.sql.Date(new Date().getTime())); //seteamos el pais custodiaTemporalController.getRecord().setCountrycodeorigen("EC"); custodiaTemporalController.getRecord().setCountrycodedest("EC"); armaSeleccionada=null; btn=Boolean.FALSE; } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Método para obtener el centro de control * @throws Exception */ private void obtenerCentroControl() throws Exception { tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); PersonAddressController personAddressController = new PersonAddressController(); TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); } /* (non-Javadoc) * @see com.fp.frontend.controller.AbstractController#querydatabase() */ @SuppressWarnings("unchecked") @Override protected void querydatabase() { try { Request request = this.callerhelper.getRequest(); HashMap mtables = new HashMap(); registroArmController.setRecperpage(10000); DtoQuery dtoRegistroArma = registroArmController.getDtoQuery(true); mtables.put(registroArmController.getBeanalias(), dtoRegistroArma); request.setQueryTables(mtables); request.put("queryalias", "ARMASPERSONA"); request.put("querytype", "P"); request.put("serielote", armasController.getMfilters().get("lote")); Response resp = this.callerhelper.executeQuery(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { MessageHelper.setMessageError(resp); } else { armasController.setLrecord((List)resp.get("ARMASLIST")); super.postQuery(this.lrecord); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /* (non-Javadoc) * @see com.fp.frontend.controller.AbstractController#save() */ @Override public void save(){ try { if(armaSeleccionada==null){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneelarmaacustodiatemporal")); } Request request = this.callerhelper.getRequest(); HashMap msave = new HashMap(); //tipo de registro custodiaTemporalController.getRecord().setTiporegistro(tipoProceso.getPk().getCatalog()); custodiaTemporalController.getRecord().setTiporegistrocode(tipoProceso.getPk().getCatalogcode()); //aerolinea custodiaTemporalController.getRecord().setAerolineacode("AEROLINEAS"); //centro control custodiaTemporalController.getRecord().setCcentrocontrol(centroControl.getPk()); //aeropuerto origen custodiaTemporalController.getRecord().setAeropuertoorigcode("AEROPUERTOS"); //aeropuerto destino custodiaTemporalController.getRecord().setAeropuertodestcode("AEROPUERTOS"); //persona que registra la custodia custodiaTemporalController.getRecord().setPersoncode(tsafeUserDetail.getPk().getPersoncode()); custodiaTemporalController.update(); DtoSave dtosaveCustodiaTem = custodiaTemporalController.getDtoSave(); dtosaveCustodiaTem.setPosition(1); msave.put(custodiaTemporalController.getBeanalias(), dtosaveCustodiaTem); //arma armasController.clearAll(); armaSeleccionada.setIsnew(true); armaSeleccionada.setPk(null); //fecha de registro armaSeleccionada.setFecharegistro(new java.sql.Date(new Date().getTime())); //estado anterior armaSeleccionada.getModifiedData().put("estadoanterior", armaSeleccionada.getEstado()); //nuevo estado TgeneCatalogDetail estadoArma = CatalogDetailController.find("ESTADOARMA", tipoProceso.getLegalcode()).get(0); armaSeleccionada.setEstado(estadoArma.getPk().getCatalog()); armaSeleccionada.setEstadocodigo("ESTADOARMA"); armasController.actualizar(armaSeleccionada); DtoSave dtosaveArma = armasController.getDtoSave(); dtosaveArma.setPosition(2); msave.put(armasController.getBeanalias(), dtosaveArma); //decomisoarma es el detalle de la custodia temporal DtoSave dtosaveDecomisoArma= decomisoArmaController.getDtoSave(); dtosaveDecomisoArma.setPosition(3); msave.put(decomisoArmaController.getBeanalias(), dtosaveDecomisoArma); request.setSaveTables(msave); Response resp = this.callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); MessageHelper.setMessageInfo(resp); custodiaTemporalController.getRecord().setNotransaccion(resp.get("numerotransaccion").toString()); armaSeleccionada=null; btn=Boolean.TRUE; } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Metodo que debuelve los datos del la custodia temporal Arma decomisada * @param numeroTransaccion */ public void buscarDecomiso(String numeroTransaccion){ try { if(numeroTransaccion!=null && numeroTransaccion.length()>0){ //custodia temporal custodiaTemporalController.setRecord(CustodiaTemporalController.findNotransaccion(numeroTransaccion)); if(custodiaTemporalController.getRecord()!=null && custodiaTemporalController.getRecord().getPk()!=null){ //tarmDecomisoArma TgeneCatalogDetail estadoArma = CatalogDetailController.find("ESTADOARMA", tipoProceso.getLegalcode()).get(0); tarmDecomisoArmaBuscado=DecomisoArmaController.findxCodigoCustTemporal(custodiaTemporalController.getRecord().getPk(),estadoArma.getPk().getCatalog()); if(tarmDecomisoArmaBuscado!=null){ //decomiso del arma armaSeleccionada= ArmasController.findxCodigo(tarmDecomisoArmaBuscado.getCarma()); armaSeleccionada.getModifiedData().put("observacion", tarmDecomisoArmaBuscado.getObservacion()); //Se puso el PK del arma en el mapa para que se presente en el dialogo de entrega material y no desaparezca armaSeleccionada.getModifiedData().put("pk", armaSeleccionada.getPk()); armasController.setLrecord(new ArrayList()); armasController.getLrecord().add(armaSeleccionada); executeProvince(); executeProvinceDestino(); executeCanton(); executeCantonDestino(); //propietario TcustPersonDetail personDetail= PersonDetailController.find(custodiaTemporalController.getRecord().getPersoncodeprop().toString()); custodiaTemporalController.getRecord().getModifiedData().put("tipodocumento",personDetail.getModifiedData().get("destipoidentificacion")); custodiaTemporalController.getRecord().getModifiedData().put("numerodocumento",personDetail.getIdentification()); custodiaTemporalController.getRecord().getModifiedData().put("nombrerazonsocial",personDetail.getName()); TcustPersonPhone personPhone= PersonPhoneController.find(custodiaTemporalController.getRecord().getPersoncodeprop().toString(), codigoTelefonoFijo); if(personPhone!=null){ custodiaTemporalController.getRecord().getModifiedData().put("telefono",personPhone.getPhonenumber()); } }else{ this.init(); } }else{ this.init(); } } } catch (Exception e) { MessageHelper.setMessageError(e); } } /** * Metodo para la entrega del arma y cambio de estado * Guarda en la BD */ public void saveEntrega(){ try { Request request = this.callerhelper.getRequest(); HashMap msave = new HashMap(); //arma armasController.clearAll(); armaSeleccionada.setIsnew(true); armaSeleccionada.setPk(null); //fecha de registro armaSeleccionada.setFecharegistro(new java.sql.Date(new Date().getTime())); //nuevo estado debe regresar al estado anterior armaSeleccionada.setEstado(tarmDecomisoArmaBuscado.getEstadoanterior()); //fecha de registro armaSeleccionada.setFecharegistro(new java.sql.Date(new Date().getTime())); armasController.actualizar(armaSeleccionada); DtoSave dtosaveArma = armasController.getDtoSave(); dtosaveArma.setPosition(1); msave.put(armasController.getBeanalias(), dtosaveArma); //decomisoarma es el detalle de la custodia temporal decomisoArmaController.clearAll(); tarmDecomisoArmaBuscado.setIsnew(true); tarmDecomisoArmaBuscado.setPk(null); //estado entregado tarmDecomisoArmaBuscado.setEstado(codigoEntregadoEstado); decomisoArmaController.setRecord(tarmDecomisoArmaBuscado); //la fecha de registro tarmDecomisoArmaBuscado.setFdecomiso((new Timestamp(new java.util.Date().getTime()))); decomisoArmaController.update(); DtoSave dtosaveDecomisoArma= decomisoArmaController.getDtoSave(); dtosaveDecomisoArma.setPosition(2); msave.put(decomisoArmaController.getBeanalias(), dtosaveDecomisoArma); request.setSaveTables(msave); Response resp = this.callerhelper.executeSave(request); if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { this.postCommit(resp); MessageHelper.setMessageInfo(resp); armaSeleccionada=null; btn=Boolean.TRUE; } else { MessageHelper.setMessageError(resp); } } catch (Throwable e) { MessageHelper.setMessageError(e); } } /** * Metodo para inicializar la lista de las armas * y la validacion del propietario del arma */ public void registrarMaterial(){ try { if(custodiaTemporalController.getRecord().getPersoncodeprop()==null ||custodiaTemporalController.getRecord().getPersoncodeprop()==0){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionepropietario")); return; } armasController.setLrecord(new ArrayList()); } catch (Exception e) { MessageHelper.setMessageError(e); } } //lov de persona /** * Método para abrir el lov de personas */ public void openPersonLov() { Map> params = new HashMap<>(); PersonLovController.openLov(params); } /** * Maneja la respuesta del Lov de Personas * @param event * @throws Exception */ public void onReturnPersonLov(SelectEvent event) throws Exception { TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); custodiaTemporalController.getRecord().setPersoncodeprop(personaDetailSelecionada.getPk().getPersoncode()); custodiaTemporalController.getRecord().getModifiedData().put("tipodocumento",personaDetailSelecionada.getModifiedData().get("destipoidentificacion")); custodiaTemporalController.getRecord().getModifiedData().put("numerodocumento",personaDetailSelecionada.getIdentification()); custodiaTemporalController.getRecord().getModifiedData().put("nombrerazonsocial",personaDetailSelecionada.getName()); custodiaTemporalController.getRecord().getModifiedData().put("telefono",personaDetailSelecionada.getModifiedData().get("telefono")); registroArmController.getMfilters().put("personcode", personaDetailSelecionada.getPk().getPersoncode().toString()); } /** * Método para manejar el evento change en el CheckBox * Arma a decomisar * @throws Exception */ public void onChange(TarmArmas arma) throws Exception { for(TarmArmas t:armasController.getLrecord()){ t.getModifiedData().put("estado",Boolean.FALSE); if(arma.getPk().equals(t.getPk())){ t.getModifiedData().put("estado",Boolean.TRUE); } } } /** * Metodo que se ejecuta al pulsar el boton aceptar del dialog que lista las armas a seleccionar * Valida si selecciono algun registro si no le obliga a seleccionar */ public void aceptarPopup(){ //validamos que de la lista exista un registro escogido armaSeleccionada=null; for(TarmArmas t:armasController.getLrecord()){ if(Boolean.TRUE.equals(t.getModifiedData().get("estado"))){ if(t.getModifiedData().get("observacion")==null || t.getModifiedData().get("observacion").toString().length()==0){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselaobservacion")); return; } armaSeleccionada=t; } } if(armaSeleccionada==null){ MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneelarmaacustodiatemporal")); return; } } /** * Metodo que se ejecuta al pulsar el boton cancelar del dialog de listado de las armas * Cambia el estado a false de las armas seleccionadas */ public void cancelarPopup(){ armaSeleccionada=null; for(TarmArmas t:armasController.getLrecord()){ t.getModifiedData().put("estado",Boolean.FALSE); } } /** * Metodo para buscar el propietario del arma y asignarle al arma */ public void cargarPropietario(){ for(TarmArmas arma:armasController.getLrecord()){ if(arma.getModifiedData().get("personcode")!=null){ TcustPersonDetail personaDetalle=PersonDetailController.find(arma.getModifiedData().get("personcode").toString()); arma.getModifiedData().put("propietario", personaDetalle.getName()); } } } /** * Método para el evento change del combo provincias */ public void executeProvince() { if ((custodiaTemporalController.getRecord().getCountrycodeorigen() != null) && (custodiaTemporalController.getRecord().getCountrycodeorigen().compareTo("") != 0)) { lcantones = CantonController.find(custodiaTemporalController.getRecord().getCountrycodeorigen(), custodiaTemporalController.getRecord().getProvincecodeorigen()); lcities = new ArrayList<>(); lEraser = new ArrayList<>(); lprovincesdest = new ArrayList<>(); for(TgeneProvince prov:lprovinces){ if(prov.getPk().getProvincecode().equals(this.custodiaTemporalController.getRecord().getProvincecodeorigen())){ this.lEraser.add(prov); continue; }else { lprovincesdest.add(prov); } } } } /** * Método para el evento change del combo aereopuertos */ public void executeAereopuerto() { aeropuertosdestino = new ArrayList<>(); lEraser = new ArrayList<>(); for(TgeneCatalogDetail aereo:this.aeropuertosorigen){ if(aereo.getPk().getCatalog().equals(this.custodiaTemporalController.getRecord().getAeropuertoorig())){ this.lEraser.add(aereo); continue; }else { aeropuertosdestino.add(aereo); } } } /** * Método para el evento change del combo cantones */ public void executeCanton() { if ((custodiaTemporalController.getRecord().getCountrycodeorigen() != null) && (custodiaTemporalController.getRecord().getCountrycodeorigen().compareTo("") != 0)) { lcities = CityController.find(custodiaTemporalController.getRecord().getCountrycodeorigen(), custodiaTemporalController.getRecord().getProvincecodeorigen(), custodiaTemporalController.getRecord().getCantoncodeorigen()); } } /** * Método para el evento change del combo provincias */ public void executeProvinceDestino() { if ((custodiaTemporalController.getRecord().getCountrycodedest() != null) && (custodiaTemporalController.getRecord().getCountrycodedest().compareTo("") != 0)) { lcantonesdest = CantonController.find(custodiaTemporalController.getRecord().getCountrycodedest(), custodiaTemporalController.getRecord().getProvincecodedest()); lcitiesdest = new ArrayList<>(); } } /** * Método para el evento change del combo cantones */ public void executeCantonDestino() { if ((custodiaTemporalController.getRecord().getCountrycodedest()!= null) && (custodiaTemporalController.getRecord().getCountrycodedest().compareTo("") != 0)) { lcitiesdest = CityController.find(custodiaTemporalController.getRecord().getCountrycodedest(), custodiaTemporalController.getRecord().getProvincecodedest(), custodiaTemporalController.getRecord().getCantoncodedest()); } } /** * Metodo para obtener los codigos */ public String codigos(String parametro){ TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); return tgeneParameters.getTextvalue(); } public CustodiaTemporalController getCustodiaTemporalController() { return custodiaTemporalController; } public void setCustodiaTemporalController( CustodiaTemporalController custodiaTemporalController) { this.custodiaTemporalController = custodiaTemporalController; } public ArmasController getArmasController() { return armasController; } public void setArmasController(ArmasController armasController) { this.armasController = armasController; } public DecomisoArmaController getDecomisoArmaController() { return decomisoArmaController; } public void setDecomisoArmaController( DecomisoArmaController decomisoArmaController) { this.decomisoArmaController = decomisoArmaController; } public List getLprovinces() { return lprovinces; } public void setLprovinces(List lprovinces) { this.lprovinces = lprovinces; } public List getLcantones() { return lcantones; } public void setLcantones(List lcantones) { this.lcantones = lcantones; } public List getLcities() { return lcities; } public void setLcities(List lcities) { this.lcities = lcities; } public TgeneCatalogDetail getTipoProceso() { return tipoProceso; } public void setTipoProceso(TgeneCatalogDetail tipoProceso) { this.tipoProceso = tipoProceso; } public List getAerolineas() { return aerolineas; } public void setAerolineas(List aerolineas) { this.aerolineas = aerolineas; } public List getLprovincesdest() { return lprovincesdest; } public void setLprovincesdest(List lprovincesdest) { this.lprovincesdest = lprovincesdest; } public List getLcantonesdest() { return lcantonesdest; } public void setLcantonesdest(List lcantonesdest) { this.lcantonesdest = lcantonesdest; } public List getLcitiesdest() { return lcitiesdest; } public void setLcitiesdest(List lcitiesdest) { this.lcitiesdest = lcitiesdest; } public TarmArmas getArmaSeleccionada() { return armaSeleccionada; } public void setArmaSeleccionada(TarmArmas armaSeleccionada) { this.armaSeleccionada = armaSeleccionada; } public RegistroArmController getRegistroArmController() { return registroArmController; } public void setRegistroArmController(RegistroArmController registroArmController) { this.registroArmController = registroArmController; } public TarmCentroControl getCentroControl() { return centroControl; } public void setCentroControl(TarmCentroControl centroControl) { this.centroControl = centroControl; } public TsafeUserDetail getTsafeUserDetail() { return tsafeUserDetail; } public void setTsafeUserDetail(TsafeUserDetail tsafeUserDetail) { this.tsafeUserDetail = tsafeUserDetail; } public Boolean getBtn() { return btn; } public void setBtn(Boolean btn) { this.btn = btn; } public List getAeropuertosorigen() { return aeropuertosorigen; } public void setAeropuertosorigen(List aeropuertosorigen) { this.aeropuertosorigen = aeropuertosorigen; } public List getAeropuertosdestino() { return aeropuertosdestino; } public void setAeropuertosdestino(List aeropuertosdestino) { this.aeropuertosdestino = aeropuertosdestino; } }