public static Result detallesRecorridos() {

    RecorridoDAO recorridoDAO = new RecorridoDAO();
    // ojo ajustar
    List<Recorrido> lstRecorridos = recorridoDAO.listarRecorridos();

    Form<FormularioConsultaRecorrido> form =
        Form.form(FormularioConsultaRecorrido.class).bindFromRequest();

    if (form.hasErrors()) {
      flash("error", "Se encontraron errores al consultar el recorrido.");
      return badRequest(
          views.html.recorridosConsulta.render(
              Form.form(FormularioConsultaRecorrido.class), lstRecorridos, null, null));

    } else {
      FormularioConsultaRecorrido formularioConsultaRecorrido = form.get();

      Recorrido recorrido =
          recorridoDAO.consultarRecorridoPorId(formularioConsultaRecorrido.idRecorrido);
      FormularioRecorrido formRecorrido = new FormularioRecorrido();
      formRecorrido.tipoRecorrido = String.valueOf(recorrido.getTipo());
      formRecorrido.nombre = recorrido.getNombre();
      formRecorrido.descripcion = recorrido.getDescripcion();
      formRecorrido.horaFrecuente = recorrido.getHoraFrecuente();

      String diasFrecuentes = recorrido.getDiaFrecuente();
      formRecorrido.diaFrecuente = new ArrayList<String>();
      if (diasFrecuentes != null) {
        String[] arrDias = diasFrecuentes.split(",");
        for (int i = 0; i < arrDias.length; i++) {
          formRecorrido.diaFrecuente.add(arrDias[i]);
        }
      }

      formRecorrido.fechaInicioRuta =
          String.valueOf(recorrido.getLstRuta().get(0).getFechaInicioRuta());
      formRecorrido.fechaFinRuta = String.valueOf(recorrido.getLstRuta().get(0).getFechaFinRuta());
      formRecorrido.latitudInicio =
          String.valueOf(recorrido.getLstRuta().get(0).getLatitudInicio());
      formRecorrido.longitudInicio =
          String.valueOf(recorrido.getLstRuta().get(0).getLongitudInicio());
      formRecorrido.latitudFin = String.valueOf(recorrido.getLstRuta().get(0).getLatitudFin());
      formRecorrido.longitudFin = String.valueOf(recorrido.getLstRuta().get(0).getLongitudFin());
      formRecorrido.lugarInicio = recorrido.getLstRuta().get(0).getLugarInicio();
      formRecorrido.lugarFin = recorrido.getLstRuta().get(0).getLugarFin();
      formRecorrido.lstAmigos = new ArrayList<String>();

      Boolean existe = false;
      User usuario = Application.getLocalUser(session());
      for (UsuarioXRecorrido usuarioRecorrido : recorrido.getLstUsuarioXRecorrido()) {
        formRecorrido.lstAmigos.add(usuarioRecorrido.getUsuario().name);
        if (usuario.id == usuarioRecorrido.getUsuario().id) existe = true;
      }

      formRecorrido.idRecorrido = recorrido.getIdRecorrido();

      return ok(views.html.recorridosDetalle.render(formRecorrido, existe));
    }
  }
 private static void insertarRecorrido(
     Recorrido recorrido, Ruta ruta, List<UsuarioXRecorrido> listUsuarioRecorrido) {
   RecorridoDAO recorridoDao = new RecorridoDAO();
   recorrido.getLstRuta().add(ruta);
   recorrido.setLstUsuarioXRecorrido(listUsuarioRecorrido);
   recorridoDao.agregarRecorrido(recorrido);
 }
  public static Result listarRecorridosWeb() {

    RecorridoDAO recorridoDAO = new RecorridoDAO();
    List<Recorrido> lstRecorridos = recorridoDAO.listarRecorridos();
    response().setContentType("text/html; charset=utf-8");
    return ok(
        views.html.recorridosConsulta.render(
            Form.form(FormularioConsultaRecorrido.class), lstRecorridos, null, null));
  }
  public static Result inscribirARecorrido() {

    String mensaje = "";
    Form<FormularioConsultaRecorrido> form =
        Form.form(FormularioConsultaRecorrido.class).bindFromRequest();
    FormularioConsultaRecorrido formularioConsultaRecorrido = form.get();

    RecorridoDAO recorridoDao = new RecorridoDAO();
    Recorrido recorrido =
        recorridoDao.consultarRecorridoPorId(formularioConsultaRecorrido.idRecorrido);

    User usuarioSession = Application.getLocalUser(session());
    UsuariosXRecorridoDAO usuarioRecorridoDao = new UsuariosXRecorridoDAO();
    List<UsuarioXRecorrido> lstUsuarioRecorrido =
        usuarioRecorridoDao.consultarUsuarioEnRecorridoPorRecorridoYUsuario(
            recorrido, usuarioSession);

    if (lstUsuarioRecorrido.size() > 0) {
      usuarioRecorridoDao.eliminarUsuarioXRecorrido(lstUsuarioRecorrido.get(0));
      mensaje =
          "<div style='padding: 5px 5px 5px 5px; background-color:#c4ead0'>Se ha retirado del recorrido satisfactoriamente</div>";

      // Notificacion retiro
      notificarCambioParticipacionRecorrido(recorrido, false);

    } else {
      UsuarioXRecorrido usuarioRecorrido = new UsuarioXRecorrido();
      usuarioRecorrido.setRecorrido(recorrido);
      usuarioRecorrido.setUsuario(usuarioSession);
      usuarioRecorrido.setIndAdministrador(false);
      usuarioRecorrido.setIndConfirmado(true);
      usuarioRecorridoDao.agregarUsuarioXRecorrido(usuarioRecorrido);
      mensaje =
          "<div style='padding: 5px 5px 5px 5px; background-color:#c4ead0'>Se ha unido al recorrido satisfactoriamente</div>";

      // Notificacion union
      notificarCambioParticipacionRecorrido(recorrido, true);
    }

    return ok(mensaje);
  }
  public static Result listarRecorridos() {

    RecorridoDAO recorridoDAO = new RecorridoDAO();
    List<Recorrido> lstRecorridos = recorridoDAO.listarRecorridos();
    return ok(toJson(lstRecorridos));
  }