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<AbstractDataTransport> {

    /**
     * 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<TgeneProvince> lprovinces;

    /**
     * Atributo para la lista de objetos TgeneProvince
     */
    private List<TgeneCanton> lcantones;

    /**
     * Atributo para la lista de objetos TgeneProvince
     */
    private List<TgeneCity> lcities;

    /**
     * Atributo para la lista de objetos TgeneProvince
     */
    private List<TgeneProvince> lprovincesdest;

    /**
     * Atributo para la lista de objetos TgeneProvince
     */
    private List<TgeneCanton> lcantonesdest;

    /**
     * Atributo para la lista de objetos TgeneProvince
     */
    private List<TgeneCity> lcitiesdest;
    /**
     * Atributo del tipo de registro es decomiso
     */
    private TgeneCatalogDetail tipoProceso;
    /**
     * Atributo del tipo de aerolineas
     */
    private List<TgeneCatalogDetail> aerolineas;
    /**
     * Atributo del tipo de aeropuertos origen
     */
    private List<TgeneCatalogDetail> aeropuertosorigen;
    /**
     * Atributo del tipo de aeropuertos destino
     */
    private List<TgeneCatalogDetail> aeropuertosdestino;
    /**
     *
     */
    private List<Object> 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<Object>();
            // 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&eacute;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<String, DtoQuery> mtables = new HashMap<String, DtoQuery>();
            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<TarmArmas>) 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<String, DtoSave> msave = new HashMap<String, DtoSave>();
            //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<TarmArmas>());
                        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<String, DtoSave> msave = new HashMap<String, DtoSave>();
            //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<TarmArmas>());
        } catch (Exception e) {
            MessageHelper.setMessageError(e);
        }
    }

    //lov de persona
    /**
     * M&eacute;todo para abrir el lov de personas
     */
    public void openPersonLov() {
        Map<String, List<String>> 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&eacute;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&eacute;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&eacute;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&eacute;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&eacute;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&eacute;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<TgeneProvince> getLprovinces() {
        return lprovinces;
    }

    public void setLprovinces(List<TgeneProvince> lprovinces) {
        this.lprovinces = lprovinces;
    }

    public List<TgeneCanton> getLcantones() {
        return lcantones;
    }

    public void setLcantones(List<TgeneCanton> lcantones) {
        this.lcantones = lcantones;
    }

    public List<TgeneCity> getLcities() {
        return lcities;
    }

    public void setLcities(List<TgeneCity> lcities) {
        this.lcities = lcities;
    }

    public TgeneCatalogDetail getTipoProceso() {
        return tipoProceso;
    }

    public void setTipoProceso(TgeneCatalogDetail tipoProceso) {
        this.tipoProceso = tipoProceso;
    }

    public List<TgeneCatalogDetail> getAerolineas() {
        return aerolineas;
    }

    public void setAerolineas(List<TgeneCatalogDetail> aerolineas) {
        this.aerolineas = aerolineas;
    }

    public List<TgeneProvince> getLprovincesdest() {
        return lprovincesdest;
    }

    public void setLprovincesdest(List<TgeneProvince> lprovincesdest) {
        this.lprovincesdest = lprovincesdest;
    }

    public List<TgeneCanton> getLcantonesdest() {
        return lcantonesdest;
    }

    public void setLcantonesdest(List<TgeneCanton> lcantonesdest) {
        this.lcantonesdest = lcantonesdest;
    }

    public List<TgeneCity> getLcitiesdest() {
        return lcitiesdest;
    }

    public void setLcitiesdest(List<TgeneCity> 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<TgeneCatalogDetail> getAeropuertosorigen() {
        return aeropuertosorigen;
    }

    public void setAeropuertosorigen(List<TgeneCatalogDetail> aeropuertosorigen) {
        this.aeropuertosorigen = aeropuertosorigen;
    }

    public List<TgeneCatalogDetail> getAeropuertosdestino() {
        return aeropuertosdestino;
    }

    public void setAeropuertosdestino(List<TgeneCatalogDetail> aeropuertosdestino) {
        this.aeropuertosdestino = aeropuertosdestino;
    }

}
