public String cambiarFase() {
    if (this.generarReporte()) {
      try {
        AuditoriaDTO auditoriaDTO = new AuditoriaDTO();
        auditoriaDTO.setFechaModificacion(new Date());
        auditoriaDTO.setUsuarioModificacion(usuario);
        // obtenerDatosIniciales();
        this.fasesSecuencia =
            catalogoServicio.obtenerSecuenciaDeFase(
                faseIesDTO.getFaseProcesoDTO().getId(), procesoActual.getId());

        FaseIesDTO faseActual =
            catalogoServicio.obtenerFaseIesActual(
                this.informacionIesDTO.getIes().getId(), this.procesoActual.getId(), new Date());
        if (!faseActual.getFaseDTO().getId().equals(FaseSecuenciaEnum.REGISTRO.getValueId())) {
          return "cambiarFase";
        }

        for (FaseSecuenciaDTO faseSecDTO : fasesSecuencia) {
          if (faseSecDTO.getTipoCambioFase().compareTo(TipoFaseEnum.PRORROGA) != 0) {
            FaseIesDTO nuevaFase = faseIesDTO;
            faseIesDTO.setFechaFin(new Date());
            faseIesDTO.setAuditoriaDTO(auditoriaDTO);
            catalogoServicio.registrarCambioFase(faseIesDTO);
            nuevaFase.setId(null);
            nuevaFase.setFechaInicio(new Date());
            if (faseIesDTO.getTipo().compareTo(TipoFaseEnum.PRORROGA) == 0) {
              nuevaFase.setTipo(TipoFaseEnum.PRORROGA);
            } else {
              nuevaFase.setFechaFin(faseSecDTO.getFaseSiguienteDTO().getFechaFin());
            }
            nuevaFase.setFaseProcesoDTO(faseSecDTO.getFaseSiguienteDTO());
            nuevaFase.setFaseDTO(faseSecDTO.getFaseSiguienteDTO().getFaseDTO());
            this.faseIesDTO = catalogoServicio.registrarCambioFase(nuevaFase);
            ListaIesController controller =
                (ListaIesController)
                    FacesContext.getCurrentInstance()
                        .getExternalContext()
                        .getSessionMap()
                        .get("listaIesController");
            controller.cargarMenus();
          }
        }
      } catch (ServicioException e) {
        JsfUtil.msgError("Error al finalizar registro. Consulte con el administrador.");
        e.printStackTrace();
      }

    } else {
      JsfUtil.msgError("Error al obtener muestra de estudiantes. Consulte con el administrador.");
    }
    return "cambiarFase";
  }
  @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 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;
 }