package com.fp.frontend.controller.armas.solicitud;

import java.security.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;

import org.hibernate.HibernateException;
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.Filter;
import com.fp.dto.query.SubQuery;
import com.fp.frontend.controller.AbstractController;
import com.fp.frontend.controller.ReportController;
import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController;
import com.fp.frontend.controller.armas.lov.ArmasLovController;
import com.fp.frontend.controller.armas.lov.CertArmasLovController;
import com.fp.frontend.controller.pcustomer.PersonDetailController;
import com.fp.frontend.controller.pcustomer.lov.PersonLovController;
import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController;
import com.fp.frontend.helper.MessageHelper;
import com.fp.frontend.utility.MsgControlArmas;
import com.fp.frontend.utility.Utilidades;
import com.fp.persistence.commondb.exception.CommondbException;
import com.fp.persistence.commondb.helper.FormatDates;
import com.fp.persistence.parmas.fun.TarmRegistroArmas;
import com.fp.persistence.parmas.param.TarmCentroControl;
import com.fp.persistence.parmas.soli.TarmArmas;
import com.fp.persistence.parmas.soli.TarmCertificadoArmas;
import com.fp.persistence.parmas.soli.TarmCertificadoArmasKey;
import com.fp.persistence.pcustomer.gene.TcustPersonDetail;
import com.fp.persistence.pgeneral.safe.TsafeUserDetail;

/**
 * Controlador principal de la funcionalidad de consulta de armas
 *
 * @author Christian Pazmino
 *
 */
@SuppressWarnings("serial")
@ManagedBean
@ViewScoped
public class CertificadosArmasController extends AbstractController<TarmArmas> {

    @ManagedProperty(value = "#{registroArmController}")
    private RegistroArmController registroArmas;

    /**
     * Tipo documento
     */
    private String tipoDoc;

    /**
     * N&uacute;mero documento
     */
    private String numDoc;

    /**
     * Nombre/raz&oacute;n social
     */
    private String nombreRazon;

    /**
     * Longitud arma
     */
    private String longitud;
    /**
     * Calibre arma
     */
    private String calibre;
    /**
     * Clase arma
     */
    private String clase;
    /**
     * Tipo de arma
     */
    private String tipoarma;
    /**
     * unidad medida peso
     */
    private String unidadmedidapeso;

    /**
     * Bandera que indica que en realidad existe luego del ingreso de datos un
     * tipo de arma explosivo v&aacute;lido
     */
    private boolean existeTipoArmaExplosivo;

    /**
     * Bandera que escifica que se deba verificar que exista un arma explosivo
     * v&aacute;lida
     */
    private boolean verificaArmaExplosivo = Boolean.TRUE;

    /**
     * Bloquea la unidad de cantidad
     */
    private boolean bloquearUnidadCantidad = Boolean.TRUE;

    /**
     * Bloquea la unidad de peso
     */
    private boolean bloquearUnidadPeso = Boolean.TRUE;

    private Date fechaActual;

    private String razonSocial;

    private String numeroDocumento;

    private String filtroPersona;
    private TarmCentroControl centroControl;

    private String sessionID;

    private Timestamp fechaReporte;

    @ManagedProperty(value = "#{reportController}")
    private ReportController reportController;

    @ManagedProperty(value = "#{certificadoArmasController}")
    private CertificadoArmasController certificadoArmasController;

    private TcustPersonDetail tcustPersonDetail;

    public CertificadosArmasController() throws Exception {
        super(TarmArmas.class);
    }

    /**
     * M&eacute;todo que se ejecuta despu&eacute;s del constructor
     */
    @PostConstruct
    private void postconstruct() {
        this.init();
        // querydatabase();
//        super.startQuery();
    }

    /**
     * Inicializa valores del controlador
     */
    private void init() {
        try {
            fechaActual = new Date();
            HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
            sessionID = session.getId();
            recperpage = 15; // Cambiar al # reg a mirar.
            lrecord = new ArrayList<>();
            beanalias = "ARMAS";
            filtroPersona = "";
            // obtiene el centro de conrtrol
            centroControl = Utilidades.obtenerCentroControl();
            TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL");
            if (tsafeUserDetail != null && tsafeUserDetail.getPk().getPersoncode() != null) {
                tcustPersonDetail = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString());
            }
        } catch (Exception e) {
            MessageHelper.setMessageError(e);
        }
    }

    protected void querydatabase() {
        try {
//	    		 DtoQuery dto = this.getDtoQuery();
//	    		 dto.setOrderby("pk");	    		 
//	    		 Filter filtro = new Filter();
//	    		 String sql="t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) and t.estado !='DEST' and t.estado !='CDP' " + filtroPersona;
//	             filtro.setSql(sql);
//	             dto.addFiltro(filtro);
//	     		
//	    		 HashMap<String, DtoQuery> mtables = new HashMap<String, DtoQuery>();
//	    		 mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla.
//
//	    		 Request request = this.callerhelper.getRequest();
//	    		 request.setQueryTables(mtables);
//	    		 Response resp = this.callerhelper.executeQuery(request);
//	    		if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) {
//	    			this.lrecord = new ArrayList<TarmArmas>();    			
//	    			MessageHelper.setMessageError(resp);
//	    		} else {
//	    			this.lrecord = (List<TarmArmas>) resp.get(this.beanalias);
//	    			for(TarmArmas armasObj:lrecord){
//	    				TarmRegistroArmas registroArmasObj = RegistroArmController.findByCodigo(armasObj.getCregistro().toString());
//	    				if(registroArmasObj!=null && registroArmasObj.getPersoncode()!=null){
//	    					TcustPersonDetail propietarioObj = PersonDetailController.find(registroArmasObj.getPersoncode().toString());
//	    					armasObj.getModifiedData().put("tipoDocumento", CatalogDetailController.findxCodigoCodcatalogo(propietarioObj.getIdentificationcatalog(), propietarioObj.getIdentificationcatalogcode()).getDescription());  
//	    					armasObj.getModifiedData().put("noDocumento", propietarioObj.getIdentification());
//	    					armasObj.getModifiedData().put("nombrerazonsocial", propietarioObj.getName());   
//	    					armasObj.getModifiedData().put("paisorigencode", registroArmasObj.getPaisorigen()); 
//	    					if(armasObj.getModifiedData().get("cclase")!=null){
//	    						armasObj.getModifiedData().put("clase", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("cclase").toString(), armasObj.getModifiedData().get("cclasecodigo").toString()).getDescription());
//	    					}	    					
//	    					if(armasObj.getModifiedData().get("ctipoarmaexplosivo")!=null){
//	    						armasObj.getModifiedData().put("tipoarmaexplosivo", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("ctipoarmaexplosivo").toString(), armasObj.getModifiedData().get("ctipoarmaexplosivocodigo").toString()).getDescription());
//	    					}	    					
//	    					if(armasObj.getModifiedData().get("ccalibre")!=null){
//	    						armasObj.getModifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("ccalibre").toString(), armasObj.getModifiedData().get("ccalibrecodigo").toString()).getDescription());
//	    					}
//	    				}
//	    			}
//	    			super.postQuery(this.lrecord);
//	    		}
        } catch (Throwable e) {
            MessageHelper.setMessageError(e);
        }
    }

    @Override
    public void next() throws Exception {
        super.next();
    }

    /**
     * Retorna un {@link DtoQuery} con los atributos a presentarse
     *
     * @return
     * @throws Exception
     */
    private DtoQuery getDtoQuery() throws Exception {
        DtoQuery dto = super.getDtoQuery(true);
        SubQuery subqueryMarca = new SubQuery("TgeneCatalogDetail", "description", "marca", "i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo");
        dto.addSubQuery(subqueryMarca);
        SubQuery subqueryColor = new SubQuery("TgeneCatalogDetail", "description", "color", "i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo");
        dto.addSubQuery(subqueryColor);
        SubQuery subqueryEstado = new SubQuery("TgeneCatalogDetail", "description", "estado", "i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo");
        dto.addSubQuery(subqueryEstado);
        SubQuery subqueryClase = new SubQuery("TarmTipoArmaExplosivo", "clase", "cclase", "i.pk=t.ctipoarmaexplosivo");
        dto.addSubQuery(subqueryClase);
        SubQuery subqueryClaseCodigo = new SubQuery("TarmTipoArmaExplosivo", "clasecodigo", "cclasecodigo", "i.pk=t.ctipoarmaexplosivo");
        dto.addSubQuery(subqueryClaseCodigo);
        SubQuery subqueryLongitud = new SubQuery("TarmTipoArmaExplosivo", "longitud", "clongitud", "i.pk=t.ctipoarmaexplosivo");
        dto.addSubQuery(subqueryLongitud);
        SubQuery subqueryLongitudCodigo = new SubQuery("TarmTipoArmaExplosivo", "longitudcodigo", "clongitudcodigo", "i.pk=t.ctipoarmaexplosivo");
        dto.addSubQuery(subqueryLongitudCodigo);
        SubQuery subqueryCalibre = new SubQuery("TarmTipoArmaExplosivo", "calibre", "ccalibre", "i.pk=t.ctipoarmaexplosivo");
        dto.addSubQuery(subqueryCalibre);
        SubQuery subqueryCalibreCodigo = new SubQuery("TarmTipoArmaExplosivo", "calibrecodigo", "ccalibrecodigo", "i.pk=t.ctipoarmaexplosivo");
        dto.addSubQuery(subqueryCalibreCodigo);
        SubQuery subqueryTipoArma = new SubQuery("TarmTipoArmaExplosivo", "tipoarmaexplosivo", "ctipoarmaexplosivo", "i.pk=t.ctipoarmaexplosivo");
        dto.addSubQuery(subqueryTipoArma);
        SubQuery subqueryTipoArmaCodigo = new SubQuery("TarmTipoArmaExplosivo", "tipoarmaexplosivocodigo", "ctipoarmaexplosivocodigo", "i.pk=t.ctipoarmaexplosivo");
        dto.addSubQuery(subqueryTipoArmaCodigo);
        SubQuery subqueryUnidad = new SubQuery("TarmTipoArmaExplosivo", "unidadmedidapeso", "cunidadmedidapeso", "i.pk=t.ctipoarmaexplosivo");
        dto.addSubQuery(subqueryUnidad);
        SubQuery subqueryUnidadCodigo = new SubQuery("TarmTipoArmaExplosivo", "unidadmedidapesocodigo", "cunidadmedidapesocodigo", "i.pk=t.ctipoarmaexplosivo");
        dto.addSubQuery(subqueryUnidadCodigo);
        SubQuery subqueryUnidadMedida = new SubQuery("TgeneCatalogDetail", "description", "unidadmedida", "i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo");
        dto.addSubQuery(subqueryUnidadMedida);
        SubQuery subquerycpersoncode = new SubQuery("TarmRegistroArmas", "personcode", "personcode", "i.pk=t.cregistro");
        dto.addSubQuery(subquerycpersoncode);

        return dto;
    }

    @Override
    public void save() {
    }

    /**
     * Abre el lov de persona
     */
    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 {
        filtroPersona = "";
        TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject();
        razonSocial = personaDetailSelecionada.getName();
        numeroDocumento = personaDetailSelecionada.getIdentification();
        filtroPersona = personaDetailSelecionada.getPk().getPersoncode().toString();
        this.setLrecord(new ArrayList<TarmArmas>());
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickSeleccionarArmas")));
//		List<TarmRegistroArmas> registroArmasList = RegistroArmController.findxPersoncode(personaDetailSelecionada.getPk().getPersoncode().toString());
//		if(registroArmasList!=null && registroArmasList.size()>0){
//			filtroPersona = " and t.cregistro in (";
//			for(TarmRegistroArmas regArmaObj : registroArmasList){
//				filtroPersona+=regArmaObj.getPk().toString() + ",";
//			}
//			filtroPersona=filtroPersona.substring(0, filtroPersona.length()-1);
//			filtroPersona+=")";
//		}else{
//			filtroPersona = " and t.cregistro = -10023";
//		}
        //querydatabase();
    }

    /* Abre el LOV de la clase del arma
     */
    public void openLovArma() {
        Map<String, List<String>> params = new HashMap<String, List<String>>();
        List<String> codigosArma = new ArrayList<>();
        String codigos = null;
        if (this.getLrecord() != null && this.getLrecord().size() > 0) {
            for (TarmArmas arma : this.getLrecord()) {
                if (codigos == null) {
                    codigos = " t.pk !='" + arma.getPk() + "' ";
                } else {
                    codigos = codigos + " and t.pk !='" + arma.getPk() + "' ";
                }
            }
        }
        codigosArma.add(codigos);
        
        List<String> estadossArma = new ArrayList<>();
        
        estadossArma.add(" t.estado !='CDP' and t.estado !='VEND' and t.estado!='TRAS' and t.estado!='MING' and t.estado!='DEST' and t.estado!='DUPL' and t.estado!='CUSTEM' and t.estado!='ENTR'"
                + " and (t.peso>0 or t.cantidad>0) ");//t.estado !='DEST' and and t.estado !='DEC'//destruidas - cambiodepropietario - vendidas - decomisadas - suspendida - cancelada - incautada
                
        List<String> codigoPersona = new ArrayList<>();
        codigoPersona.add(filtroPersona);

        params.put("ccodigosarmas", codigosArma);
        params.put("estadosarmas", estadossArma);
        params.put("codigopersona", codigoPersona);
        CertArmasLovController.openLov(params);
    }

    /**
     * Regresa del LOV de armas
     *
     * @param event
     */
    @SuppressWarnings("unchecked")
    public void onReturnArma(SelectEvent event) {
        List<TarmArmas> tarmArmas = (List<TarmArmas>) event.getObject();
        if (tarmArmas != null && tarmArmas.size() > 0) {
            for (TarmArmas arma : tarmArmas) {
                arma.getModifiedData().put("seleccionada", Boolean.TRUE);
                this.getLrecord().add(arma);
            }
        }
        //ordenamos la lista
//		Collections.sort(armasController.getLrecord(), new Comparator<TarmArmas>() {
//			public int compare(TarmArmas p1, TarmArmas p2) {
//				return new Integer(p1.getModifiedData().get("ordenarma").toString()).compareTo(new Integer(p2.getModifiedData().get("ordenarma").toString()));
//			}
//		});
    }

    public void generarReporte() {
        String path = "armas/reports/certificadosArmas";
        Boolean aux = Boolean.FALSE;
        java.util.Date today = new java.util.Date();
        java.sql.Timestamp fechaReporte = new java.sql.Timestamp(today.getTime());
        Random aleatorio = new Random();
        int ticketGenerado = aleatorio.nextInt();
//	        String filtro=null;
//	        List<String>codArmas=new ArrayList<String>();
        int i = 0;

        for (TarmArmas armasel : lrecord) {
            i++;
            if (armasel.getModifiedData().get("seleccionada") != null && armasel.getModifiedData().get("seleccionada").equals(Boolean.TRUE)) {
                aux = Boolean.TRUE;
                guardarCertificadoReporte(armasel, i, ticketGenerado, fechaReporte);
//	        		codArmas.add(armasel.getPk());
            }
        }
        if (!aux) {
            MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nohaseleccionadoarmas"));
            return;
        }
        certificadoArmasController.save();
        try {
            //Fija parametros del report.
            HashMap<String, Object> parameters = new HashMap<>();
            parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto");
            parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas");
            parameters.put("codResponsable", centroControl.getPersoncode());
            parameters.put("gradoresponsable", ""); //centroControl.getModifiedData().get("desgrado")
            parameters.put("nombreresponsable", centroControl.getModifiedData().get("desgrado") + " " + centroControl.getModifiedData().get("nombre"));
            parameters.put("centrocontrol", String.valueOf(centroControl.getModifiedData().get("desnombreinstitucion")));
            parameters.put("sessionID", sessionID);
//     	        parameters.put("fechaReporte",fechaReporte);

            parameters.put("ticket", ticketGenerado);
            parameters.put("personCodeLogin", (tcustPersonDetail != null && tcustPersonDetail.getPk() != null) ? tcustPersonDetail.getPk().getPersoncode() : null);
            if (tcustPersonDetail != null) {
                parameters.put("usuario", tcustPersonDetail.getName());
            }
            // String[] selectedEstados = filtro.split(",");
//        		parameters.put("filtro", codArmas);
            parameters.put("unidadmilitar", MsgControlArmas.getProperty("msg_inf_digitadordel") + " " + String.valueOf(centroControl.getModifiedData().get("desnombreinstitucion")));
            String format = "pdf";
            String filename = "Certificado";
            this.reportController.execute(path, parameters, format, filename, this.getLoginController());
        } catch (Exception ex) {
            MessageHelper.setMessageError(ex);
        }
    }

    private void guardarCertificadoReporte(TarmArmas armaObj, int orden, int ticket, java.sql.Timestamp fechaReporte) {
        TarmCertificadoArmas certificadoArmasObj = new TarmCertificadoArmas();
        TarmCertificadoArmasKey pk = new TarmCertificadoArmasKey();
        certificadoArmasObj.setPk(pk);
        try {
            certificadoArmasObj.getPk().setFechareporte(fechaReporte);
            certificadoArmasObj.getPk().setSessionid(sessionID);
            certificadoArmasObj.getPk().setOrden(orden);
            certificadoArmasObj.setIdentification(armaObj.getModifiedData().get("noDocumento") != null ? armaObj.getModifiedData().get("noDocumento").toString() : null);
            certificadoArmasObj.setName(armaObj.getModifiedData().get("propietario") != null ? armaObj.getModifiedData().get("propietario").toString() : null);
            certificadoArmasObj.setRegisterdate(armaObj.getFecharegistro());
            certificadoArmasObj.setClase(armaObj.getModifiedData().get("clase") != null ? armaObj.getModifiedData().get("clase").toString() : null);
            certificadoArmasObj.setTipoarmaexplosivo(armaObj.getModifiedData().get("tipoarmaexplosivo") != null ? armaObj.getModifiedData().get("tipoarmaexplosivo").toString() : null);
            certificadoArmasObj.setMarca(armaObj.getModifiedData().get("marca") != null ? armaObj.getModifiedData().get("marca").toString() : null);
            certificadoArmasObj.setCalibre(armaObj.getModifiedData().get("calibre") != null ? armaObj.getModifiedData().get("calibre").toString() : null);
            certificadoArmasObj.setLote(armaObj.getLote());
            certificadoArmasObj.setPaisfabricacion(armaObj.getModifiedData().get("paisorigen") != null ? armaObj.getModifiedData().get("paisorigen").toString() : null);
            certificadoArmasObj.setEstado(armaObj.getModifiedData().get("estado") != null ? armaObj.getModifiedData().get("estado").toString() : null);
            certificadoArmasObj.setUsercode((tcustPersonDetail != null && tcustPersonDetail.getPk() != null) ? tcustPersonDetail.getPk().getPersoncode().toString() : null);
            certificadoArmasObj.setTicket(ticket);
            certificadoArmasObj.setIsnew(true);
            certificadoArmasController.update(certificadoArmasObj);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public RegistroArmController getRegistroArmas() {
        return registroArmas;
    }

    public void setRegistroArmas(RegistroArmController registroArmas) {
        this.registroArmas = registroArmas;
    }

    public String getTipoDoc() {
        return tipoDoc;
    }

    public void setTipoDoc(String tipoDoc) {
        this.tipoDoc = tipoDoc;
    }

    public String getNumDoc() {
        return numDoc;
    }

    public void setNumDoc(String numDoc) {
        this.numDoc = numDoc;
    }

    public String getNombreRazon() {
        return nombreRazon;
    }

    public void setNombreRazon(String nombreRazon) {
        this.nombreRazon = nombreRazon;
    }

    public String getLongitud() {
        return longitud;
    }

    public void setLongitud(String longitud) {
        this.longitud = longitud;
    }

    public String getCalibre() {
        return calibre;
    }

    public void setCalibre(String calibre) {
        this.calibre = calibre;
    }

    public String getClase() {
        return clase;
    }

    public void setClase(String clase) {
        this.clase = clase;
    }

    public String getTipoarma() {
        return tipoarma;
    }

    public void setTipoarma(String tipoarma) {
        this.tipoarma = tipoarma;
    }

    public String getUnidadmedidapeso() {
        return unidadmedidapeso;
    }

    public void setUnidadmedidapeso(String unidadmedidapeso) {
        this.unidadmedidapeso = unidadmedidapeso;
    }

    public boolean isExisteTipoArmaExplosivo() {
        return existeTipoArmaExplosivo;
    }

    public void setExisteTipoArmaExplosivo(boolean existeTipoArmaExplosivo) {
        this.existeTipoArmaExplosivo = existeTipoArmaExplosivo;
    }

    public boolean isVerificaArmaExplosivo() {
        return verificaArmaExplosivo;
    }

    public void setVerificaArmaExplosivo(boolean verificaArmaExplosivo) {
        this.verificaArmaExplosivo = verificaArmaExplosivo;
    }

    public boolean isBloquearUnidadCantidad() {
        return bloquearUnidadCantidad;
    }

    public void setBloquearUnidadCantidad(boolean bloquearUnidadCantidad) {
        this.bloquearUnidadCantidad = bloquearUnidadCantidad;
    }

    public boolean isBloquearUnidadPeso() {
        return bloquearUnidadPeso;
    }

    public void setBloquearUnidadPeso(boolean bloquearUnidadPeso) {
        this.bloquearUnidadPeso = bloquearUnidadPeso;
    }

    public Date getFechaActual() {
        return fechaActual;
    }

    public void setFechaActual(Date fechaActual) {
        this.fechaActual = fechaActual;
    }

    public String getRazonSocial() {
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public String getNumeroDocumento() {
        return numeroDocumento;
    }

    public void setNumeroDocumento(String numeroDocumento) {
        this.numeroDocumento = numeroDocumento;
    }

    public ReportController getReportController() {
        return reportController;
    }

    public void setReportController(ReportController reportController) {
        this.reportController = reportController;
    }

    public CertificadoArmasController getCertificadoArmasController() {
        return certificadoArmasController;
    }

    public void setCertificadoArmasController(
            CertificadoArmasController certificadoArmasController) {
        this.certificadoArmasController = certificadoArmasController;
    }

    public String getSessionID() {
        return sessionID;
    }

    public void setSessionID(String sessionID) {
        this.sessionID = sessionID;
    }

    public Timestamp getFechaReporte() {
        return fechaReporte;
    }

    public void setFechaReporte(Timestamp fechaReporte) {
        this.fechaReporte = fechaReporte;
    }

}
