public List<Solicitud> consultarSolicitudPorUsuarioAjax(String codUsuarioAsignacion)
      throws Exception {
    HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
    Solicitud solicitudBean = new Solicitud();
    solicitudBean.setEstadoSolicitud(
        Constant.TABLA_ESTADOS_SOLCITUD
            + Constant.CHAR_GUION
            + Constant.ESTADO_SOLICITUD_PENDIENTE);

    IILDPeUsuario usuarioSesion =
        (IILDPeUsuario) request.getSession().getAttribute("USUARIO_SESION");

    BancaSub subBancaBean = new BancaSub();
    subBancaBean.setCodUsuario(usuarioSesion.getUID());
    UsuarioSubanca bean = catalogoService.getSubancaPorUsuario(subBancaBean);

    if (bean != null) {
      solicitudBean.setCodBanca(bean.getCodBanca());
    }
    solicitudBean.setUsuarioAsignacion(codUsuarioAsignacion);
    try {
      List<Solicitud> lstSolicitud = solicitudService.getLstSolicitudes(solicitudBean);
      return lstSolicitud;
    } catch (Exception e) {
      logger.error("BusquedaSolicitudAction.consultarSolicitudAjax " + e);
    }
    return new ArrayList<Solicitud>();
  }
 public String jefeInmediato(String codUsuario, Solicitud solicitud) throws Exception {
   String montoMaximo = "";
   for (int i = 0; i < 10; i++) {
     montoMaximo =
         cartasRiesgosDAO.montoDelegacionUsuario(codUsuario, solicitud.getGrupoPersona());
     BigDecimal getMontoRiesgos = new BigDecimal(montoMaximo);
     if (getMontoRiesgos.compareTo(solicitud.getRiesgoTotal()) == 1
         || getMontoRiesgos.compareTo(solicitud.getRiesgoTotal()) == 0) {
       break;
     }
     codUsuario = usuarioDAO.codJefeInmediatoRiesgos(codUsuario);
   }
   return codUsuario;
 }
  // TODO si retorna 1 paso validacion si retorna 0 no paso validacion
  public int condicionCliente(Solicitud solicitud) throws Exception {
    String getBureau = "";
    String getBbva = "";
    String getSiFinan = "";
    String getRelPub = "";
    String getInele = "";
    if (solicitud.getCondicionCliente() != null) {
      getBureau = solicitud.getCondicionCliente().getBureau();
      getBbva = solicitud.getCondicionCliente().getBbvaa();
      getSiFinan = solicitud.getCondicionCliente().getSistFinan();
      getRelPub = solicitud.getCondicionCliente().getRelevPubli();
      getInele = solicitud.getCondicionCliente().getInelegible();
    }

    if (metodoGenericoCondCliente(Constant.TABLA_BUREAU, getBureau).equals("1")
        && metodoGenericoCondCliente(Constant.TABLA_BBVA, getBbva).equals("1")
        && metodoGenericoCondCliente(Constant.TABLA_SISTEMA_FINANCIERO, getSiFinan).equals("1")
        && metodoGenericoCondCliente(Constant.TABLA_RELEVANCIA_PUBLICA, getRelPub).equals("0")
        && metodoGenericoCondCliente(Constant.TABLA_INELEGIBLES, getInele).equals("0")) {
      return 1;
    } else return 0;
  }
  // TODO si retorna 1 paso validacion si retorna 0 no paso validacion
  public int validacionMontosPlazos(Solicitud solicitud, String codGestor) throws Exception {

    String tipoPersona = usuarioDAO.getTipoPersona(codGestor);
    BigDecimal getMonto = BigDecimal.ZERO;
    String codCargo = solicitud.getGestorCod();
    String codOficina = solicitud.getCodOficina();
    if (tipoPersona.equals("O")) {
      String montoDelegacion =
          cartasRiesgosDAO.montoDelegacionUsuario(codGestor, solicitud.getGrupoPersona());
      if (montoDelegacion.equals("0")) {
        String codJefeOficina = usuarioDAO.getJefeOficina(codCargo, codOficina);
        String montoJefeOficina =
            cartasRiesgosDAO.montoDelegacionUsuario(codJefeOficina, solicitud.getGrupoPersona());
        if (!montoJefeOficina.equals("")) {
          getMonto = new BigDecimal(montoJefeOficina);
        }
        if (getMonto.compareTo(solicitud.getRiesgoTotal()) == 0
            || getMonto.compareTo(solicitud.getRiesgoTotal()) == 1) {
          return 1;
        }
      }
    } else if (tipoPersona.equals("R")) {
      String monto = "0";
      String montoDelegacion =
          cartasRiesgosDAO.montoDelegacionUsuario(codGestor, solicitud.getGrupoPersona());
      if (montoDelegacion.equals("0")) {
        String jefeInmediato = jefeInmediato(codGestor, solicitud);
        if (!jefeInmediato.equals("")) {
          monto =
              cartasRiesgosDAO.montoDelegacionUsuario(jefeInmediato, solicitud.getGrupoPersona());
        }
        BigDecimal getMontos = new BigDecimal(monto);
        if (getMontos.compareTo(solicitud.getRiesgoTotal()) == 1
            || getMontos.compareTo(solicitud.getRiesgoTotal()) == 0) {
          return 1;
        }
      } else {
        BigDecimal getMontos = new BigDecimal(montoDelegacion);
        if (getMontos.compareTo(solicitud.getRiesgoTotal()) == 1
            || getMontos.compareTo(solicitud.getRiesgoTotal()) == 0) {
          return 1;
        }
      }
    }
    return 0;
  }
  public String mensajeCondicionCliente(Solicitud solicitud) throws Exception {
    String mensaje = Constant.STR_VACIO,
        bureau = Constant.NO_APTO,
        bBVA = Constant.NO_APTO,
        sistemaFin = Constant.NO_APTO,
        relevaPub = Constant.STR_VACIO,
        inelegibles = Constant.STR_VACIO;
    String getBureau = Constant.STR_VACIO,
        getBbva = Constant.STR_VACIO,
        getSiFinan = Constant.STR_VACIO,
        getRelPub = Constant.STR_VACIO,
        getInele = Constant.STR_VACIO;

    getBureau =
        (solicitud.getCondicionCliente().getBureau() != null
            ? solicitud.getCondicionCliente().getBureau()
            : "");
    getBbva =
        (solicitud.getCondicionCliente().getBbvaa() != null
            ? solicitud.getCondicionCliente().getBbvaa()
            : "");
    getSiFinan =
        (solicitud.getCondicionCliente().getSistFinan() != null
            ? solicitud.getCondicionCliente().getSistFinan()
            : "");
    getRelPub =
        (solicitud.getCondicionCliente().getRelevPubli() != null
            ? solicitud.getCondicionCliente().getRelevPubli()
            : "");
    getInele =
        (solicitud.getCondicionCliente().getInelegible() != null
            ? solicitud.getCondicionCliente().getInelegible()
            : "");

    String valorBureau = metodoGenericoCondCliente(Constant.TABLA_BUREAU, getBureau);
    String valorBBVA = metodoGenericoCondCliente(Constant.TABLA_BBVA, getBbva);
    String valorSistemaFin =
        metodoGenericoCondCliente(Constant.TABLA_SISTEMA_FINANCIERO, getSiFinan);
    String valorRelevaPubl =
        metodoGenericoCondCliente(Constant.TABLA_RELEVANCIA_PUBLICA, getRelPub);
    String valorInelegibles = metodoGenericoCondCliente(Constant.TABLA_INELEGIBLES, getInele);
    if (!getBureau.equals(Constant.STR_VACIO)) {
      if (!valorBureau.equals("1")) {
        bureau = multitablaDetalleDAO.getDescripcion(getBureau);
      } else bureau = Constant.APTO;
    }
    if (!getBbva.equals(Constant.STR_VACIO)) {
      if (!valorBBVA.equals("1")) {
        bBVA = multitablaDetalleDAO.getDescripcion(getBbva);
      } else bBVA = Constant.APTO;
    }
    if (!getSiFinan.equals(Constant.STR_VACIO)) {
      if (!valorSistemaFin.equals("1")) {
        sistemaFin = multitablaDetalleDAO.getDescripcion(getSiFinan);
      } else sistemaFin = Constant.APTO;
    }
    if (!getRelPub.equals(Constant.STR_VACIO)) {
      if (valorRelevaPubl.equals("1")) {
        relevaPub = Constant.NO_APTO;
      } else relevaPub = Constant.APTO;
    }
    if (!valorInelegibles.equals(Constant.STR_VACIO)) {
      if (valorInelegibles.equals("1")) {
        inelegibles = Constant.NO_APTO;
      } else inelegibles = Constant.APTO;
    }
    mensaje =
        "<table> "
            + "<tr>"
            + "<td align=left>"
            + "BUREAU"
            + "</td>"
            + "<td align=right>"
            + bureau
            + "</td>"
            + "</tr> "
            + "<tr>"
            + "<td align=left>"
            + "CLASIFICACION BBVA"
            + "</td>"
            + "<td align=right>"
            + bBVA
            + "</td>"
            + "</tr> "
            + "<tr>"
            + "<td align=left>"
            + "CLASIFICACION Siste. Financiero"
            + "</td>"
            + "<td align=right>"
            + sistemaFin
            + "</td>"
            + "</tr> "
            + "<tr>"
            + "<td align=left>"
            + "RELEVANCIA"
            + "</td>"
            + "<td align=right>"
            + relevaPub
            + "</td>"
            + "</tr> "
            + "<tr>"
            + "<td align=left>"
            + "INELEGIBLES"
            + "</td>"
            + "<td align=right>"
            + inelegibles
            + "</td>"
            + "</tr> "
            + "</table>";
    return mensaje;
  }
  public List<Solicitud> consultarSolicitudAjax(
      String codCentral,
      String nroSolicitud,
      String fechaIngresoIni,
      String fechaIngresoFin,
      String fechaVencimiento,
      String usuario)
      throws Exception {
    HttpServletRequest request = WebContextFactory.get().getHttpServletRequest();
    Solicitud solicitudBean = new Solicitud();
    if (codCentral != null && !codCentral.equalsIgnoreCase(Constant.STR_VACIO)) {
      solicitudBean.setCodCentral(Constant.CHAR_PORCENTAJE + codCentral + Constant.CHAR_PORCENTAJE);
    }
    if (nroSolicitud != null && !nroSolicitud.equalsIgnoreCase(Constant.STR_VACIO)) {
      solicitudBean.setNroSolicitud(new Long(nroSolicitud));
    }
    if (fechaIngresoIni != null && !fechaIngresoIni.equalsIgnoreCase(Constant.STR_VACIO)) {
      solicitudBean.setFechaIngresoIni(UtilDate.stringToUtilDate(fechaIngresoIni, null));
    }
    if (fechaIngresoFin != null && !fechaIngresoFin.equalsIgnoreCase(Constant.STR_VACIO)) {
      solicitudBean.setFechaIngresoFin(UtilDate.stringToUtilDate(fechaIngresoFin, null));
    }
    solicitudBean.setEstadoSolicitud(
        Constant.TABLA_ESTADOS_SOLCITUD
            + Constant.CHAR_GUION
            + Constant.ESTADO_SOLICITUD_PENDIENTE);
    IILDPeUsuario usuarioSesion =
        (IILDPeUsuario) request.getSession().getAttribute("USUARIO_SESION");
    BancaSub subBancaBean = new BancaSub();
    subBancaBean.setCodUsuario(usuarioSesion.getUID());
    UsuarioSubanca bean = catalogoService.getSubancaPorUsuario(subBancaBean);
    if (bean != null) {
      solicitudBean.setCodBanca(bean.getCodBanca());
    }

    try {
      List<Solicitud> lstSolicitud = solicitudService.getLstSolicitudes(solicitudBean);
      if (usuario.equals(Constant.STR_VACIO)) {
        return lstSolicitud;
      } else {
        Usuario usuarioBean = new Usuario();
        usuarioBean.setCodigoUsuario(usuario);
        usuarioBean = catalogoService.getUsuarioMontos(usuarioBean);
        for (Solicitud solicitud : lstSolicitud) {
          if (solicitud.getGrupoPersona().equalsIgnoreCase(Constant.GRUPO_PER_NATUAL)) {
            if (solicitud.getRiesgoTotal().compareTo(usuarioBean.getMtoMaxPerNatual()) == -1) {
              lstSolicitud.remove(solicitud);
            }
          }
          if (solicitud.getGrupoPersona().equalsIgnoreCase(Constant.GRUPO_CON_RATING)) {
            if (solicitud.getRiesgoTotal().compareTo(usuarioBean.getMtoMaxRating()) == -1) {
              lstSolicitud.remove(solicitud);
            }
          }
          if (solicitud.getGrupoPersona().equalsIgnoreCase(Constant.GRUPO_SIN_RATING)) {
            if (solicitud.getRiesgoTotal().compareTo(usuarioBean.getMtoSinRating()) == -1) {
              lstSolicitud.remove(solicitud);
            }
          }
        }
        return lstSolicitud;
      }

    } catch (Exception e) {
      logger.error("BusquedaSolicitudAction.consultarSolicitudAjax " + e);
    }
    return new ArrayList<Solicitud>();
  }