package com.example.fideliza;

import android.content.Context;
import android.database.Cursor;
import android.support.v4.widget.CursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RatingBar;
import android.widget.TextView;

public class AdaptadorCursorLugares extends CursorAdapter {
	   private LayoutInflater inflador;
	   TextView nombre, direccion, distancia;
	   ImageView foto;
	   RatingBar valoracion;
	   private int menordist = 9000000;
	   private long id_menor;
	   private Lugar lugar;
	  
	   public AdaptadorCursorLugares(Context contexto, Cursor c) {
	      super(contexto, c, false);
	   }
	 
	   @Override
	   public View newView(Context contexto, Cursor c, ViewGroup padre) {
	      inflador = (LayoutInflater) contexto
	            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	      View vista = inflador.inflate(R.layout.elemento_lista, padre,false);
	      return vista;
	   }
	 
	   @Override
	   public void bindView(View vista, Context contexto, Cursor c) {
	      nombre = (TextView) vista.findViewById(R.id.nombre);
	      direccion = (TextView) vista.findViewById(R.id.direccion);
	      foto = (ImageView) vista.findViewById(R.id.foto);
	      valoracion = (RatingBar) vista.findViewById(R.id.valoracion);
	      nombre.setText(c.getString(c.getColumnIndex("nombre")));
	      direccion.setText(c.getString(c.getColumnIndex("direccion")));
	      int tipo = c.getInt(c.getColumnIndex("tipo"));
	      foto.setImageResource(TipoLugar.values()[tipo].getRecurso());
	      foto.setScaleType(ImageView.ScaleType.FIT_END);
	      valoracion.setRating(c.getFloat(c.getColumnIndex("valoracion")));
	      distancia = (TextView) vista.findViewById(R.id.distancia);
	      Geopunto posicion = new Geopunto(
	          c.getDouble(c.getColumnIndex("latitud")),
	          c.getDouble(c.getColumnIndex("longitud")));
	      if (Lugares.posicionActual != null && posicion != null
	                  && posicion.getLatitud() != 0) {
	          int d = (int) Lugares.posicionActual.distancia(posicion);
	          //Aņad
	          lugar = Lugares.elemento((int) c.getInt(c.getColumnIndex("_id")));  // Buscamos lugar
	          lugar.setDistancia(d);
	          Lugares.actualizaLugar((int) c.getInt(c.getColumnIndex("_id")), lugar);  //Actualizamos distancia en base de datos
	          //faņad
	          if (d < menordist){    //es una posicion mas cercana
	        	 id_menor = c.getInt(c.getColumnIndex("_id"));
	        	 menordist = d;
	          }
	          if (d < 2000) {
	              distancia.setText(d + " m");
	         } else {
	              distancia.setText(d / 1000 + "Km");
	         }
	      }
	   }
	public long getId_menor() {
		return id_menor;
	}
	}