@PostConstruct
  public void obtenerDatosIniciales() {
    ListaIesController controller =
        (ListaIesController)
            FacesContext.getCurrentInstance()
                .getExternalContext()
                .getSessionMap()
                .get("listaIesController");
    try {
      informacionIesDTO = registroServicio.obtenerInformacionIesPorIes(controller.getIes());
      procesoActual =
          catalogoServicio.obtenerProcesoActualPorIdAplicacion(controller.getIdAplicacion());
      // procesoActual = new ProcesoDTO();
      // procesoActual.setId(6L);
      faseIesDTO = controller.getFaseIesDTO();
      usuario = controller.getUsuario();
      listaValoresVariablesEvaluador =
          evaluacionServicio.obtenerInformacionVariablesActivas(
              null, informacionIesDTO.getId(), TipoVariableEnum.CUANTITATIVA.getValue(), null);
      LOG.info("1 procesoActual:" + procesoActual);
      LOG.info("2 procesoActual:" + procesoActual.getId());

      List<VariableProcesoDTO> listaVariablesProcesoTotal =
          catalogoServicio.obtenerVariablesProcesoTipo(procesoActual.getId(), "CUANTITATIVA");
      LOG.info("listaValoresVariablesEvaluador:" + listaValoresVariablesEvaluador.size());
      LOG.info("listaVariablesProcesoTotal:" + listaVariablesProcesoTotal.size());
      if (listaValoresVariablesEvaluador.size() == listaVariablesProcesoTotal.size()) {

        generarReporte = false;
      }

      /** Llamada a reportes */
      //    listaRecursosReportes = reporteServicio
      //	    .obtenerRecursoPorFaseProceso(6L, 6L,
      //	            EnumClaseRecurso.REPORTE);

      // cambiar listaRecursosReportes = reporteServicio
      // .obtenerRecursoPorFaseProceso(6L, 6L,
      // EnumClaseRecurso.REPORTE);

      LOG.info("listaRecursosReportes..size.." + listaRecursosReportes.size());

    } catch (ServicioException e) {
      JsfUtil.msgError("Error al obtener informacion inicial. " + e.getMessage());
      e.printStackTrace();
    } catch (Exception e) {
      JsfUtil.msgError("Error al obtener informacion inicial. Comuníquese con el administrador.");
      e.printStackTrace();
    }
  }
 public void obtenerDetalle(ValorVariableDTO valorVariable) {
   valorVariableSeleccionada = valorVariable;
   String tablaVariable =
       valorVariableSeleccionada.getVariableProcesoDTO().getVariableDTO().getTablaMuestra();
   if (tablaVariable.equals("docentes") || tablaVariable.equals("estudiantes")) {
     listaPersonas =
         evaluacionServicio.obtenerPersonasDeListaIdPorVariable(
             valorVariable.getVariableProcesoDTO(), informacionIesDTO.getId());
     RequestContext.getCurrentInstance().execute("dlgPersonas.show();");
   }
   if (tablaVariable.equals("proyectos")) {
     listaProyectos =
         evaluacionServicio.obtenerProyectosDeListaIdPorVariable(valorVariableSeleccionada);
     RequestContext.getCurrentInstance().execute("dlgProyectos.show();");
   }
   if (tablaVariable.equals("publicaciones")) {
     listaPublicaciones =
         evaluacionServicio.obtenerPublicacionesDeListaIdPorVariable(valorVariableSeleccionada);
     RequestContext.getCurrentInstance().execute("dlgPublicaciones.show();");
   }
   if (tablaVariable.equals("actividades_vinculacion")) {
     listaActividades =
         evaluacionServicio.obtenerActividadesDeListaIdPorVariable(valorVariableSeleccionada);
     RequestContext.getCurrentInstance().execute("dlgActividades.show();");
   }
   if (tablaVariable.equals("convenios")) {
     listaConvenios =
         evaluacionServicio.obtenerConveniosDeListaIdPorVariable(valorVariableSeleccionada);
     RequestContext.getCurrentInstance().execute("dlgConvenios.show();");
   }
   if (tablaVariable.equals("producciones")) {
     listaProducciones =
         evaluacionServicio.obtenerProduccionesDeListaIdPorVariable(valorVariableSeleccionada);
     RequestContext.getCurrentInstance().execute("dlgProducciones.show();");
   }
   if (tablaVariable.equals("informacion_carrera")) {
     listaCarreras =
         evaluacionServicio.obtenerCarrerasDeListaIdPorVariable(valorVariableSeleccionada);
     RequestContext.getCurrentInstance().execute("dlgCarreras.show();");
   }
 }
  public void generarReporteEvaluador() {
    HttpServletRequest request =
        (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();

    ByteArrayOutputStream outReporte = new ByteArrayOutputStream();
    String pathJasperReporte =
        request.getSession().getServletContext().getRealPath("")
            + "/reportesJasper/variables/cuantitativasPorInformacionIes.jasper";

    Map<String, Object> parametrosReporte = new HashMap<>();

    String pathLogo =
        request.getSession().getServletContext().getRealPath("") + "/images/logo_ceaaces.png";
    parametrosReporte.put("par_logo", pathLogo);
    parametrosReporte.put("ies", informacionIesDTO.getIes().getNombre());

    // parametrosReporte.put("SUBREPORT_DIR", request.getSession()
    // .getServletContext().getRealPath("")
    // + "/reportesJasper/mallasGrafico/");
    try {

      JRDataSource dataSourceMallas =
          new JRBeanCollectionDataSource(listaValoresVariablesEvaluador);
      if (dataSourceMallas != null) {
        JRXlsExporter exporter = new JRXlsExporter();
        cargarPropiedadesReporte(exporter);

        JasperPrint jasperPrint =
            JasperFillManager.fillReport(pathJasperReporte, parametrosReporte, dataSourceMallas);
        exporter.setExporterInput(new SimpleExporterInput(jasperPrint));
        exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outReporte));

        exporter.exportReport();
        reporteBytes = outReporte.toByteArray();
      }
    } catch (Exception e) {
      e.printStackTrace();
      JsfUtil.msgError("Error al generar el reporte, comuníquese con el administrador del sistema");
    }
  }
  public void generarReporteInformeEvaluacion() {
    HttpServletRequest request =
        (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();

    ListaIesController controller =
        (ListaIesController) JsfUtil.obtenerObjetoSesion("listaIesController");

    IesDTO ies = controller.getIes();

    ByteArrayOutputStream outReporte = new ByteArrayOutputStream();
    String pathJasperReporteCuantitativas =
        request.getSession().getServletContext().getRealPath("")
            + "/reportesJasper/variables/informeEvaluacionCuantitativas.jasper";

    String pathJasperReporteCualitativas =
        request.getSession().getServletContext().getRealPath("")
            + "/reportesJasper/variables/informeEvaluacionCualitativas.jasper";

    Map<String, Object> parametrosReporte = new HashMap<>();

    String pathLogo =
        request.getSession().getServletContext().getRealPath("") + "/images/logo_ceaaces.png";
    parametrosReporte.put("par_logo", pathLogo);
    parametrosReporte.put("IES", ies.getNombre());
    parametrosReporte.put("CODIGO_IES", ies.getCodigo());
    parametrosReporte.put("ID_INFORMACION_IES", informacionIesDTO.getId());
    parametrosReporte.put("ID_PROCESO", controller.getFaseIesDTO().getProcesoDTO().getId());

    DataSource dataSource = null;
    Connection connection = null;
    try {
      InitialContext ic = new InitialContext();
      Context xmlContext = (Context) ic.lookup("java:comp/env");
      dataSource = (DataSource) xmlContext.lookup("jdbc/casDbConnection");
      connection = dataSource.getConnection();

      JRXlsExporter exporter = new JRXlsExporter();
      cargarPropiedadesReporte(exporter);

      JasperPrint jasperCuantitativas =
          JasperFillManager.fillReport(
              pathJasperReporteCuantitativas, parametrosReporte, connection);
      JasperPrint jasperPrintCualitativas =
          JasperFillManager.fillReport(
              pathJasperReporteCualitativas, parametrosReporte, connection);
      ArrayList<JasperPrint> hojasReporte = new ArrayList<JasperPrint>();
      hojasReporte.add(jasperCuantitativas);
      hojasReporte.add(jasperPrintCualitativas);

      exporter.setExporterInput(SimpleExporterInput.getInstance(hojasReporte));
      exporter.setExporterOutput(new SimpleOutputStreamExporterOutput(outReporte));

      exporter.exportReport();
      reporteBytes = outReporte.toByteArray();
      outReporte.flush();
      outReporte.close();
    } catch (Exception e) {
      e.printStackTrace();
      JsfUtil.msgError(
          "Error al generar el reporte, comuníquese con el administrador del sistema");
    } finally {
      try {
        if (connection != null) {
          connection.close();
        }
      } catch (Exception ex) {
        ex.printStackTrace();
      }
    }
  }
  public void generarValoresInicial() {

    try {
      listaVariablesProceso =
          catalogoServicio.obtenerVariablesProcesoTipo(procesoActual.getId(), "CUANTITATIVA");
      AuditoriaDTO auditoriaDTO = new AuditoriaDTO();
      auditoriaDTO.setFechaModificacion(new Date());
      auditoriaDTO.setUsuarioModificacion(usuario);
      ValorVariableDTO valorVariableDTO = new ValorVariableDTO();
      for (VariableProcesoDTO variableProcesoDTO : listaVariablesProceso) {
        // if (!variableProcesoDTO.getId().equals(30L)) {
        LOG.info("idVAriableProcesoDTO:" + variableProcesoDTO.getId());
        if (variableProcesoDTO.getInforme() != null && variableProcesoDTO.getInforme()) {
          if (variableProcesoDTO.getSqlValorInicial() != null
              || variableProcesoDTO.getSqlListaId() != null
              || variableProcesoDTO.getMuestraEstratificada()) {
            // ESTUDIANTES
            if (variableProcesoDTO.getVariableDTO().getVariableGrupoDTO() != null) {
              if (GrupoVariableEnum.GRADUADOS
                      .getValue()
                      .equals(
                          variableProcesoDTO.getVariableDTO().getVariableGrupoDTO().getNemonico())
                  && GrupoVariableEnum.ESTUDIANTES
                      .getValue()
                      .equals(
                          variableProcesoDTO
                              .getVariableDTO()
                              .getVariableGrupoDTO()
                              .getNemonico())) {
                continue;
              }
            }

            if (variableProcesoDTO.getMuestraEstratificada()) {
              List<VariableProcesoDTO> variablesHijas =
                  catalogoServicio.obtenerVariablesHijas(variableProcesoDTO.getId());
              boolean estudiantes = false;
              for (VariableProcesoDTO varProcesoDTO : variablesHijas) {
                if (GrupoVariableEnum.ESTUDIANTES
                    .getValue()
                    .equals(varProcesoDTO.getVariableDTO().getVariableGrupoDTO().getNemonico())) {
                  estudiantes = true;
                  break;
                }
              }
              if (estudiantes) {
                continue;
              }
              List<ValorVariableDTO> resultado =
                  evaluacionServicio.obtenerValorVariableMuestraEstratificada(
                      variableProcesoDTO,
                      variablesHijas,
                      this.informacionIesDTO.getId(),
                      auditoriaDTO,
                      faseIesDTO);
              listaValoresVariablesEvaluador.addAll(resultado);

            } else if (variableProcesoDTO.getVariablePadreDTO() == null) {

              valorVariableDTO =
                  evaluacionServicio.calcularValorVariableYMuestra(
                      variableProcesoDTO, informacionIesDTO.getId(), faseIesDTO, auditoriaDTO);

            } else {
              if (variableProcesoDTO.getVariablePadreDTO().getId() != null) {
                continue;
              }
            }
            // if
            // (variableProcesoDTO.getMuestraEvidencia())
            // {

            // } else {
            // valorVariableDTO = evaluacionServicio
            // .obtenerValorVariable(
            // variableProcesoDTO,
            // faseIesDTO,
            // informacionIesDTO.getId(),
            // auditoriaDTO);
            // }
            listaValoresVariablesEvaluador.add(valorVariableDTO);

          } else {
            valorVariableDTO = new ValorVariableDTO();
            valorVariableDTO.setValorInicial("0");
            valorVariableDTO.setIdInformacionIes(informacionIesDTO.getId());
            valorVariableDTO.setActivo(true);
            valorVariableDTO.setFaseIesDTO(faseIesDTO);
            valorVariableDTO.setVariableProcesoDTO(variableProcesoDTO);
            valorVariableDTO.setAuditoriaDTO(auditoriaDTO);
            valorVariableDTO.setValor("0");
            valorVariableDTO.setValorVerificado(0.0);
            valorVariableDTO.setRegistrosNoAceptados(0);
            valorVariableDTO = evaluacionServicio.registrarValorVariable(valorVariableDTO);
            listaValoresVariablesEvaluador.add(valorVariableDTO);
          }
        }
      }
      listaValoresVariablesEvaluador.addAll(
          evaluacionServicio.obtenerInformacionVariables(
              GrupoVariableEnum.ESTUDIANTES.getValue(),
              informacionIesDTO.getIes().getId(),
              TipoVariableEnum.CUANTITATIVA.getValue(),
              null));
      // }
    } catch (ServicioException e) {
      e.printStackTrace();
      JsfUtil.msgError("Error al obtener datos de variables. Comuníquese con el administrador.");
    } catch (Exception e) {
      e.printStackTrace();
      JsfUtil.msgError("Error al obtener datos de variables. Comuníquese con el administrador.");
    }
  }
 public boolean generarReporte() {
   // obtenerDatosIniciales();
   listaValoresVariables.clear();
   try {
     listaVariablesProceso =
         catalogoServicio.obtenerVariablesProcesoTipo(procesoActual.getId(), "CUANTITATIVA");
     AuditoriaDTO auditoriaDTO = new AuditoriaDTO();
     auditoriaDTO.setFechaModificacion(new Date());
     auditoriaDTO.setUsuarioModificacion(usuario);
     ValorVariableDTO valorVariableDTO = new ValorVariableDTO();
     for (VariableProcesoDTO variableProcesoDTO : listaVariablesProceso) {
       LOG.info("idVAriableProcesoDTO:" + variableProcesoDTO.getId());
       if (variableProcesoDTO.getInforme() != null && variableProcesoDTO.getInforme()) {
         if (variableProcesoDTO.getSqlValorInicial() != null
             || variableProcesoDTO.getMuestraEstratificada()) {
           if (variableProcesoDTO.getVariablePadreDTO() == null) {
             if (variableProcesoDTO.getMuestraEstratificada()) {
               List<VariableProcesoDTO> variablesHijas =
                   catalogoServicio.obtenerVariablesHijas(variableProcesoDTO.getId());
               List<ValorVariableDTO> resultado =
                   evaluacionServicio.obtenerValorVariableMuestraEstratificada(
                       variableProcesoDTO,
                       variablesHijas,
                       this.informacionIesDTO.getId(),
                       auditoriaDTO,
                       faseIesDTO);
               listaValoresVariables.addAll(resultado);
             } else if (variableProcesoDTO.getVariableDTO().getVariableGrupoDTO() != null
                 && (GrupoVariableEnum.GRADUADOS
                     .getValue()
                     .equals(
                         variableProcesoDTO
                             .getVariableDTO()
                             .getVariableGrupoDTO()
                             .getNemonico()))) {
               // if
               // (variableProcesoDTO.getMuestraEvidencia())
               // {
               valorVariableDTO =
                   evaluacionServicio.calcularValorVariableYMuestra(
                       variableProcesoDTO, informacionIesDTO.getId(), faseIesDTO, auditoriaDTO);
               // } else {
               // valorVariableDTO = evaluacionServicio
               // .obtenerValorVariable(
               // variableProcesoDTO,
               // faseIesDTO,
               // informacionIesDTO.getId(),
               // auditoriaDTO);
               // }
               listaValoresVariables.add(valorVariableDTO);
             }
           }
         }
       }
     }
   } catch (ServicioException e) {
     e.printStackTrace();
     return false;
   } catch (Exception e) {
     e.printStackTrace();
     JsfUtil.msgError("Error al obtener datos de variables. Comuníquese con el administrador.");
     return false;
   }
   return true;
 }