package com.ramos.munoz.tesis;

import java.io.IOException;
import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.graphics.BitmapFactory;
import android.location.Location;
import android.util.Log;

import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class Estacionamiento {

    public static final String POST_ID = "id";
    public static final String POST_NOMBRE = "nombre";
    public static final String POST_DISTACIOA = "distancia";
    public static final String POST_TELEFONO = "telefono";
    public static final String POST_DISPONIBILIDAD = "disponibilidad";
    public static final String POST_LATITUD = "latitud";
    public static final String POST_LONGITUD = "longitud";
    public static final String POST_DIRECCION = "direccion";
    public static final String POST_HORARIO = "horario";
    public static final String POST_DESCRIPCION = "descripcion";
    public static final String POST_FECHA_CREACION = "";
    public static final String POST_FECHA_EDITADO = "actualizado";
    public static final String POST_TIENE_VALORACION = "valoracion";
    public static final String POST_FECHA = "fecha";
    public static final String POST_VALORACION = "valor";
    public static final String POST_SERVICIO = "ser_nombre";
    public static final String POST_PRECIO_POR_HORA = "precio";
    public static final String POST_PROMEDIO_VALORACION = "promedio";

    public static final int INDICE_ID = 0;
    public static final int INDICE_NOMBRE = 1;
    public static final int INDICE_DISPONIBILIDAD = 2;
    public static final int INDICE_LATITUD = 3;
    public static final int INDICE_LONGITUD = 4;
    public static final int INDICE_FECHA_EDITADO = 5;
    public static final int INDICE_TIENE_VALORACION = 6;
    public static final int INDICE_TELEFONO = 7;
    public static final int INDICE_DIRECCION = 8;
    public static final int INDICE_HORARIO = 9;
    public static final int INDICE_DESCRIPCION = 10;
    public static final int INDICE_FECHA = 11;
    public static final int INDICE_VALORACION = 12;
    public static final int INDICE_DISTANCIA = 13;
    public static final int INDICE_SERVICIO = 14;
    public static final int INDICE_PRECIO_POR_HORA = 15;
    public static final int INDICE_PROMEDIO_VALORACION = 16;

    public static final int LIMITE_COMENTARIOS = 2;

    private int offsetComentarios;
    private ArrayList<NameValuePair> datos;
    private ArrayList<ServicioAdicional> serviciosAdicionales;
    private ArrayList<Precio> precios;
    private ArrayList<Comentario> comentarios;
    private Boolean comentariosCargados = false;
    private Boolean preciosCargados = false;
    private Boolean serviciosAdicionalesCargados = false;
    private MarkerOptions marcador;

    public Estacionamiento() {
	offsetComentarios = 0;
    }

    public Estacionamiento asignarVariables(JSONObject variables) {
	ArrayList<NameValuePair> datos = new ArrayList<NameValuePair>();
	Estacionamiento e = new Estacionamiento();
	try {
	    // ID
	    if (variables.has(POST_ID) && !variables.getString(POST_ID).equals("null")) datos
		    .add(new BasicNameValuePair(POST_ID, variables.getString(POST_ID)));
	    else datos.add(new BasicNameValuePair(POST_ID, "-1"));
	    // NOMBRE
	    if (variables.has(POST_NOMBRE) && !variables.getString(POST_NOMBRE).equals("null")) datos.add(new BasicNameValuePair(POST_NOMBRE, variables
		    .getString(POST_NOMBRE)));
	    else datos.add(new BasicNameValuePair(POST_NOMBRE, "No especificado"));
	    // DISPONIBILIDAD
	    if (variables.has(POST_DISPONIBILIDAD) && !variables.getString(POST_DISPONIBILIDAD).equals("null")) datos.add(new BasicNameValuePair(
		    POST_DISPONIBILIDAD, variables.getString(POST_DISPONIBILIDAD)));
	    else datos.add(new BasicNameValuePair(POST_DISPONIBILIDAD, "0"));
	    // LATITUD
	    if (variables.has(POST_LATITUD) && !variables.getString(POST_LATITUD).equals("null")) datos.add(new BasicNameValuePair(POST_LATITUD, variables
		    .getString(POST_LATITUD)));
	    else datos.add(new BasicNameValuePair(POST_LATITUD, "0"));
	    // LONGITUD
	    if (variables.has(POST_LONGITUD) && !variables.getString(POST_LONGITUD).equals("null")) datos.add(new BasicNameValuePair(POST_LONGITUD, variables
		    .getString(POST_LONGITUD)));
	    else datos.add(new BasicNameValuePair(POST_LONGITUD, "0"));
	    // FECHA EDITADO
	    if (variables.has(POST_FECHA_EDITADO) && !variables.getString(POST_FECHA_EDITADO).equals("null")) datos.add(new BasicNameValuePair(
		    POST_FECHA_EDITADO, variables.getString(POST_FECHA_EDITADO)));
	    else datos.add(new BasicNameValuePair(POST_FECHA_EDITADO, "No especificado"));
	    // TIENE VALORACION
	    if (variables.has(POST_TIENE_VALORACION) && !variables.getString(POST_TIENE_VALORACION).equals("null")) datos.add(new BasicNameValuePair(
		    POST_TIENE_VALORACION, variables.getString(POST_TIENE_VALORACION)));
	    else datos.add(new BasicNameValuePair(POST_TIENE_VALORACION, "No especificado"));
	    // TELEFONO
	    if (variables.has(POST_TELEFONO) && !variables.getString(POST_TELEFONO).equals("null")) datos.add(new BasicNameValuePair(POST_TELEFONO, variables
		    .getString(POST_TELEFONO)));
	    else datos.add(new BasicNameValuePair(POST_TELEFONO, "No especificado"));
	    // DIRECCION
	    if (variables.has(POST_DIRECCION) && !variables.getString(POST_DIRECCION).equals("null")) datos.add(new BasicNameValuePair(POST_DIRECCION,
		    variables.getString(POST_DIRECCION)));
	    else datos.add(new BasicNameValuePair(POST_DIRECCION, "No especificado"));
	    // HORARIO
	    if (variables.has(POST_HORARIO) && !variables.getString(POST_HORARIO).equals("null")) datos.add(new BasicNameValuePair(POST_HORARIO, variables
		    .getString(POST_HORARIO)));
	    else datos.add(new BasicNameValuePair(POST_HORARIO, "No especificado"));
	    // DESCRIPCION
	    if (variables.has(POST_DESCRIPCION) && !variables.getString(POST_DESCRIPCION).equals("null")) datos.add(new BasicNameValuePair(POST_DESCRIPCION,
		    variables.getString(POST_DESCRIPCION)));
	    else datos.add(new BasicNameValuePair(POST_DESCRIPCION, "Sin descripción"));
	    // FECHA
	    if (variables.has(POST_FECHA) && !variables.getString(POST_FECHA).equals("null")) datos.add(new BasicNameValuePair(POST_FECHA, variables
		    .getString(POST_FECHA)));
	    else datos.add(new BasicNameValuePair(POST_FECHA, "No especificado"));
	    // VALORACION
	    if (variables.has(POST_VALORACION) && !variables.getString(POST_VALORACION).equals("null")) datos.add(new BasicNameValuePair(POST_VALORACION,
		    variables.getString(POST_VALORACION)));
	    else datos.add(new BasicNameValuePair(POST_VALORACION, "0"));
	    // DISTANCIA
	    if (variables.has(POST_DISTACIOA) && !variables.getString(POST_DISTACIOA).equals("null")) datos.add(new BasicNameValuePair(POST_DISTACIOA,
		    variables.getString(POST_DISTACIOA)));
	    else datos.add(new BasicNameValuePair(POST_DISTACIOA, "No especificado"));
	    // SERVICIO
	    if (variables.has(POST_SERVICIO) && !variables.getString(POST_SERVICIO).equals("POST_SERVICIO")) datos.add(new BasicNameValuePair(POST_SERVICIO,
		    variables.getString(POST_SERVICIO)));
	    else datos.add(new BasicNameValuePair(POST_SERVICIO, "No especificado"));
	    // PRECIO POR HORA
	    if (variables.has(POST_PRECIO_POR_HORA) && !variables.getString(POST_PRECIO_POR_HORA).equals("POST_PRECIO_POR_HORA")) datos
		    .add(new BasicNameValuePair(POST_PRECIO_POR_HORA, variables.getString(POST_PRECIO_POR_HORA)));
	    else datos.add(new BasicNameValuePair(POST_PRECIO_POR_HORA, "0"));
	    // PROMEDIO VALORACION
	    if (variables.has(POST_PROMEDIO_VALORACION) && !variables.getString(POST_PROMEDIO_VALORACION).equals("POST_PROMEDIO_VALORACION")) datos
		    .add(new BasicNameValuePair(POST_PROMEDIO_VALORACION, variables.getString(POST_PROMEDIO_VALORACION)));
	    else datos.add(new BasicNameValuePair(POST_PROMEDIO_VALORACION, "0"));

	} catch (Exception ex) {
	    ex.printStackTrace();
	    Log.e("AsignarVariablesEstacionamiento", ex.getMessage());
	} finally {
	    e.setDatos(datos);
	    LatLng posicion = new LatLng(e.getLatitud(), e.getLongitud());
	    marcador = new MarkerOptions();
	    marcador.position(posicion);
	    marcador.title(e.getNombre());
	    if (e.getDisponibilidad().equals("Si")) {
		marcador.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_est_disponible));

	    } else {
		marcador.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_estacionamiento));
	    }
	    marcador.snippet(e.getNombre() + ";" + e.getDisponibilidad() + ";" + e.getFechaEdicion() + ";" + e.getId());
	    e.setMarcador(marcador);
	}
	return e;
    }

    public ArrayList<Estacionamiento> buscarPorFiltros(Location loc, int offset, int limite, String nombre, String servicio, int disponibilidad, int cercania,
	    int precio, int valoracion) {

	Log.d("buscarPorFiltros", "EMPEZO A BUSCAR");
	ArrayList<Estacionamiento> estacionamientos = new ArrayList<Estacionamiento>();
	try {
	    ArrayList<NameValuePair> parametros = new ArrayList<NameValuePair>();
	    parametros.add(new BasicNameValuePair("offset", String.valueOf(offset)));
	    parametros.add(new BasicNameValuePair("limite", String.valueOf(limite)));
	    parametros.add(new BasicNameValuePair(POST_NOMBRE, nombre));
	    parametros.add(new BasicNameValuePair("servicio", servicio));
	    parametros.add(new BasicNameValuePair(POST_DISPONIBILIDAD, String.valueOf(disponibilidad)));
	    parametros.add(new BasicNameValuePair("precio", String.valueOf(precio)));
	    parametros.add(new BasicNameValuePair(POST_TIENE_VALORACION, String.valueOf(valoracion)));
	    parametros.add(new BasicNameValuePair("cercania", String.valueOf(cercania)));
	    parametros.add(new BasicNameValuePair("latitud", String.valueOf(loc.getLatitude())));
	    parametros.add(new BasicNameValuePair("longitud", String.valueOf(loc.getLongitude())));

	    ConexionServidor con = new ConexionServidor();
	    JSONObject respuestaJSON = con.ejecutarHttpPost(parametros, ConexionServidor.URL_BUSCAR_ESTACIONAMIENTO_POR_FILTRO);
	    boolean esError = true;

	    esError = respuestaJSON.has("error");
	    if (esError) {
		Log.d("buscarPorFiltros", "ERROR: " + respuestaJSON.getString("error"));
	    } else {

		JSONArray variables = respuestaJSON.getJSONArray("resultado");
		Log.d("buscarPorFiltros", variables.toString());
		for (int i = 0; i < variables.length(); i++) {
		    JSONObject estacionamientoJSON = variables.getJSONObject(i);
		    Estacionamiento e = asignarVariables(estacionamientoJSON);
		    estacionamientos.add(e);
		}
	    }
	} catch (IOException e) {
	    e.printStackTrace();
	    Log.e("buscarPorFiltros", "ERROR 1: " + e.getMessage() + " : " + e.getCause());
	} catch (JSONException e) {
	    e.printStackTrace();
	    Log.e("buscarPorFiltros", "ERROR 2: " + e.getMessage() + " : " + e.getCause());
	} catch (Exception e) {
	    e.printStackTrace();
	    Log.e("buscarPorFiltros", "ERROR 3: " + e.getMessage() + " : " + e.getCause());
	}
	return estacionamientos;
    }

    public Estacionamiento buscarPorId(int id) {
	Log.d("buscarPorId", "EMPEZO A BUSCAR");
	Estacionamiento est = new Estacionamiento();
	try {
	    ArrayList<NameValuePair> parametros = new ArrayList<NameValuePair>();
	    parametros.add(new BasicNameValuePair("id", String.valueOf(id)));
	    ConexionServidor con = new ConexionServidor();
	    JSONObject respuestaJSON = con.ejecutarHttpPost(parametros, ConexionServidor.URL_BUSCAR_ESTACIONAMIENTO);
	    boolean esError = true;

	    esError = respuestaJSON.has("error");
	    if (esError) {
		Log.d("buscarPorId", "ERROR: " + respuestaJSON.getString("error"));
	    } else {
		JSONObject estacionamientoJSON = respuestaJSON.getJSONObject("resultado");
		Log.d("buscarPorId", estacionamientoJSON.toString());
		est = asignarVariables(estacionamientoJSON);
	    }

	} catch (IOException e) {
	    e.printStackTrace();
	    Log.e("buscarPorId", "ERROR 1: " + e.getMessage() + " : " + e.getCause());
	} catch (JSONException e) {
	    e.printStackTrace();
	    Log.e("buscarPorId", "ERROR 2: " + e.getMessage() + " : " + e.getCause());
	} catch (Exception e) {
	    e.printStackTrace();
	    Log.e("buscarPorId", "ERROR 3: " + e.getMessage() + " : " + e.getCause());
	}

	return est;
    }

    public ArrayList<Estacionamiento> buscarCercanos() {
	Log.d("buscarCercanos", "EMPEZO A BUSCAR");
	ArrayList<Estacionamiento> estacionamientos = new ArrayList<Estacionamiento>();
	try {
	    ArrayList<NameValuePair> parametros = new ArrayList<NameValuePair>();
	    ConexionServidor con = new ConexionServidor();
	    JSONObject respuestaJSON = con.ejecutarHttpPost(parametros, ConexionServidor.URL_BUSCAR_ESTACIONAMIENTOS_CERCANOS);
	    boolean esError = true;
	    esError = respuestaJSON.has("error");
	    if (esError) {
		Log.d("buscarCercanos", "ERROR: " + respuestaJSON.getString("error"));
	    } else {
		JSONArray variables = respuestaJSON.getJSONArray("resultado");
		for (int i = 0; i < variables.length(); i++) {
		    JSONObject estacionamientoJSON = variables.getJSONObject(i);
		    Estacionamiento e = asignarVariables(estacionamientoJSON);
		    estacionamientos.add(e);
		}
	    }
	} catch (IOException e) {
	    e.printStackTrace();
	    Log.e("buscarCercanos", "ERROR 1: " + e.getMessage() + " : " + e.getCause());
	} catch (JSONException e) {
	    e.printStackTrace();
	    Log.e("buscarCercanos", "ERROR 2: " + e.getMessage() + " : " + e.getCause());
	} catch (Exception e) {
	    e.printStackTrace();
	    Log.e("buscarCercanos", "ERROR 3: " + e.getMessage() + " : " + e.getCause());
	}
	return estacionamientos;
    }

    public Boolean buscarPrecios(int id) {
	Log.d("buscarPrecios", "Empezó a buscar");
	try {
	    ArrayList<NameValuePair> parametros = new ArrayList<NameValuePair>();
	    parametros.add(new BasicNameValuePair("id", String.valueOf(id)));
	    ConexionServidor con = new ConexionServidor();
	    JSONObject respuestaJSON = con.ejecutarHttpPost(parametros, ConexionServidor.URL_BUSCAR_PRECIOS);
	    boolean esError = true;
	    esError = respuestaJSON.has("error");
	    if (esError) {
		Log.d("buscarCercanos", "ERROR: " + respuestaJSON.getString("error"));
		return false;
	    } else {
		JSONArray variables = respuestaJSON.getJSONArray("resultado");
		Log.d("buscarPrecios", "Respuesta: " + variables.toString());
		precios = new ArrayList<Precio>();
		for (int i = 0; i < variables.length(); i++) {
		    JSONObject precioJSON = variables.getJSONObject(i);
		    int idPrecio = precioJSON.getInt("id");
		    int tieneTiempoExtra = precioJSON.getInt("tiempo_extra");
		    long valorHora = precioJSON.getLong("hora");
		    long valorMinimo = precioJSON.getLong("minimo");
		    long valorTiempoExtra = precioJSON.getLong("valor_tiempo_extra");
		    String carroceria = precioJSON.getString("carroceria");

		    Precio p = new Precio(idPrecio, valorHora, valorMinimo, tieneTiempoExtra, valorTiempoExtra, carroceria);
		    precios.add(p);
		}
		Log.d("buscarPrecios", "Todo bien");
		return true;
	    }
	} catch (IOException e) {
	    e.printStackTrace();
	    Log.e("buscarPrecios", "ERROR 1: " + e.getMessage() + " : " + e.getCause());
	} catch (JSONException e) {
	    e.printStackTrace();
	    Log.e("buscarPrecios", "ERROR 2: " + e.getMessage() + " : " + e.getCause());
	} catch (Exception e) {
	    e.printStackTrace();
	    Log.e("buscarPrecios", "ERROR 3: " + e.getMessage() + " : " + e.getCause());
	}
	Log.e("buscarPrecios", "Todo bien");
	return false;
    }

    public Boolean cargarComentarios(int id, int offSet, int limite) {

	Log.d("cargarComentarios", "Se inicio la busqueda de historial");
	String respuesta = "Todo bien";
	String error = "";
	try {
	    ArrayList<NameValuePair> parametros = new ArrayList<NameValuePair>();
	    parametros.add(new BasicNameValuePair("id", Integer.toString(id)));
	    parametros.add(new BasicNameValuePair("limite", Integer.toString(limite)));
	    parametros.add(new BasicNameValuePair("offset", Integer.toString(offSet)));

	    ConexionServidor con = new ConexionServidor();
	    JSONObject respuestaJSON = con.ejecutarHttpPost(parametros, ConexionServidor.URL_BUSCAR_COMENTARIOS);
	    boolean esError = true;
	    esError = respuestaJSON.has("error");
	    if (esError) {
		error = respuestaJSON.getString("error");
		respuesta = error;
		Log.d("cargarComentarios", error);
		return false;
	    } else {
		JSONArray variables = respuestaJSON.getJSONArray("resultado");
		comentarios = new ArrayList<Comentario>();
		for (int i = 0; i < variables.length(); i++) {
		    JSONObject comentariosJSON = variables.getJSONObject(i);
		    String usuario = comentariosJSON.getString("apodo");
		    String comentario = comentariosJSON.getString("comentario");
		    String fechaComentario = comentariosJSON.getString("fecha");
		    int valoracion = comentariosJSON.getInt("valoracion");
		    Comentario c = new Comentario(usuario, comentario, fechaComentario, valoracion);
		    comentarios.add(c);
		}
		Log.d("cargarComentarios", "todo bien");
		return true;
	    }
	} catch (IOException e) {
	    e.printStackTrace();
	    Log.e("cargarComentarios", "Error 1: " + e.getMessage() + " : " + e.getCause());
	} catch (JSONException e) {
	    e.printStackTrace();
	    Log.e("cargarComentarios", "Error 2: " + e.getMessage() + " : " + e.getCause());
	} catch (Exception e) {
	    e.printStackTrace();
	    Log.e("cargarComentarios", "Error 3: " + e.getMessage() + " : " + e.getCause());
	}
	Log.d("cargarComentarios", "Valor a retornar: " + respuesta);
	return false;
    }

    public Boolean buscarServiciosAdicionales(int id) {
	Log.d("buscarServiciosAdicionales", "Empezó a buscar");
	try {
	    ArrayList<NameValuePair> parametros = new ArrayList<NameValuePair>();
	    parametros.add(new BasicNameValuePair("id", String.valueOf(id)));
	    ConexionServidor con = new ConexionServidor();
	    JSONObject respuestaJSON = con.ejecutarHttpPost(parametros, ConexionServidor.URL_BUSCAR_SERVICIOS_ADICIONALES);
	    boolean esError = true;
	    esError = respuestaJSON.has("error");
	    if (esError) {
		Log.d("Buscando precios", "ERROR");
		return false;
	    } else {
		JSONArray variables = respuestaJSON.getJSONArray("resultado");
		Log.d("buscarServiciosAdicionales", "Respuesta: " + variables.toString());
		serviciosAdicionales = new ArrayList<ServicioAdicional>();
		for (int i = 0; i < variables.length(); i++) {
		    JSONObject precioJSON = variables.getJSONObject(i);
		    int idServicio = precioJSON.getInt("id");
		    String nombre = precioJSON.getString("nombre");
		    int valor = precioJSON.getInt("valor");
		    ServicioAdicional sa = new ServicioAdicional(idServicio, nombre, valor);
		    serviciosAdicionales.add(sa);
		}
		Log.d("buscarServiciosAdicionales", "todo bien");
		return true;
	    }
	} catch (IOException e) {
	    e.printStackTrace();
	    Log.e("buscarServiciosAdicionales", "ERROR 1: " + e.getMessage() + " : " + e.getCause());
	} catch (JSONException e) {
	    e.printStackTrace();
	    Log.e("buscarServiciosAdicionales", "ERROR 2: " + e.getMessage() + " : " + e.getCause());
	} catch (Exception e) {
	    e.printStackTrace();
	    Log.e("buscarServiciosAdicionales", "ERROR 3: " + e.getMessage() + " : " + e.getCause());
	}
	return false;
    }

    public void setId(int id) {
	this.datos.set(INDICE_ID, new BasicNameValuePair(POST_ID, String.valueOf(id)));
    }

    public void setDatos(ArrayList<NameValuePair> datos) {
	this.datos = datos;
    }

    public int getId() {
	return Integer.parseInt(datos.get(INDICE_ID).getValue());
    }

    public String getNombre() {
	return datos.get(INDICE_NOMBRE).getValue();
    }

    public String getDisponibilidad() {
	int disponible = Integer.parseInt(datos.get(INDICE_DISPONIBILIDAD).getValue());
	if (disponible == 1) return "Si";
	return "No";
    }

    public Double getLatitud() {
	return Double.parseDouble(datos.get(INDICE_LATITUD).getValue());
    }

    public Double getLongitud() {
	return Double.parseDouble(datos.get(INDICE_LONGITUD).getValue());
    }

    public String getFechaEdicion() {
	return datos.get(INDICE_FECHA_EDITADO).getValue();
    }

    public int getValoracion() {
	return Integer.parseInt(datos.get(INDICE_VALORACION).getValue());
    }

    public String getFecha() {
	return datos.get(INDICE_FECHA).getValue();
    }

    public String getTelefono() {
	return datos.get(INDICE_TELEFONO).getValue();
    }

    public String getServicio() {
	return datos.get(INDICE_SERVICIO).getValue();
    }

    public String getHorario() {
	return datos.get(INDICE_HORARIO).getValue();
    }

    public String getDescripcion() {
	return datos.get(INDICE_DESCRIPCION).getValue();
    }

    public String getDistancia() {
	return datos.get(INDICE_DISTANCIA).getValue();
    }

    public String getPrecioPorHora() {
	return datos.get(INDICE_PRECIO_POR_HORA).getValue();
    }

    public float getPromedioValoracion() {
	return Float.parseFloat(datos.get(INDICE_PROMEDIO_VALORACION).getValue());
    }

    public void setPreciosCargados(Boolean preciosCargados) {
	this.preciosCargados = preciosCargados;
    }

    public Boolean preciosCargados() {
	return this.preciosCargados;
    }

    public ArrayList<Precio> getPrecios() {
	return precios;
    }

    public ArrayList<ServicioAdicional> getServicioAdicionales() {
	return serviciosAdicionales;
    }

    public ArrayList<Comentario> getComentarios() {
	return comentarios;
    }

    public Boolean ServiciosAdicionalesCargados() {
	return serviciosAdicionalesCargados;
    }

    public void setServiciosAdicionalesCargados(Boolean serviciosAdicionalesCargados) {
	this.serviciosAdicionalesCargados = serviciosAdicionalesCargados;
    }

    public int getOffsetComentarios() {
	return offsetComentarios;
    }

    public void setOffsetComentarios(int offsetComentarios) {
	this.offsetComentarios = offsetComentarios;
    }

    public Boolean comentariosCargados() {
	return comentariosCargados;
    }

    public void setComentariosCargados(Boolean comentariosCargados) {
	this.comentariosCargados = comentariosCargados;
    }

    public int getTieneValoracion() {
	return Integer.parseInt(datos.get(INDICE_TIENE_VALORACION).getValue());
    }

    public MarkerOptions getMarcador() {
	return marcador;
    }

    public void setMarcador(MarkerOptions marcador) {
	this.marcador = marcador;
    }

    public void setMarkerIcon(BitmapDescriptor bitMap) {
	marcador.icon(bitMap);

    }

}
