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.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class Vehiculo {

    private int id;
    private String patente;
    private String marca;
    private String modelo;
    private Boolean seleccionado = false;
    private String carroceriaNombre;
    private Carroceria carroceria;

    public Vehiculo(int id, String patente, String marca, String modelo, String carroceria) {
	this.id = id;
	this.carroceriaNombre = carroceria;
	this.patente = patente;
	this.marca = marca;
	this.modelo = modelo;
    }

    public static Vehiculo buscarPorPatente(String patente) {
	Log.d("buscarPorPatente", "EMPEZO A BUSCAR");
	Vehiculo vehiculo = null;
	try {
	    ArrayList<NameValuePair> parametros = new ArrayList<NameValuePair>();
	    parametros.add(new BasicNameValuePair("patente", patente));
	    ConexionServidor con = new ConexionServidor();
	    JSONObject respuestaJSON = con.ejecutarHttpPost(parametros, ConexionServidor.URL_BUSCAR_VEHICULO_POR_PATENTE);
	    boolean esError = true;

	    esError = respuestaJSON.has("error");
	    if (esError) {
		Log.d("buscarPorPatente", "ERROR: " + respuestaJSON.getString("error"));
	    } else {
		JSONObject vehiculoJSON = respuestaJSON.getJSONArray("resultado").getJSONObject(0);
		Log.d("resp",vehiculoJSON.toString());
		Log.d("buscarPorPatente", vehiculoJSON.toString());
		int id = vehiculoJSON.getInt("id");
		String marca = vehiculoJSON.getString("marca");
		String modelo = vehiculoJSON.getString("modelo");
		String carroceria = vehiculoJSON.getString("carroceria");
		vehiculo = new Vehiculo(id, patente, marca, modelo, carroceria);
	    }

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

	return vehiculo;
    }

    public static Boolean registrarVehiculo(String usuario, String contrasena, String patente, String modelo, String marca, int carroceria) {
	Log.d("registrarVehiculo", "EMPEZO A REGISTRAR");
	try {
	    ArrayList<NameValuePair> parametros = new ArrayList<NameValuePair>();
	    parametros.add(new BasicNameValuePair("apodo", usuario));
	    parametros.add(new BasicNameValuePair("contrasena", contrasena));
	    parametros.add(new BasicNameValuePair("patente", patente));
	    parametros.add(new BasicNameValuePair("modelo", modelo));
	    parametros.add(new BasicNameValuePair("marca", marca));
	    parametros.add(new BasicNameValuePair("carroceria", String.valueOf(carroceria)));
	    ConexionServidor con = new ConexionServidor();
	    JSONObject respuestaJSON = con.ejecutarHttpPost(parametros, ConexionServidor.URL_REGISTRAR_VEHICULO);
	    Boolean resp = respuestaJSON.getBoolean("respuesta");
	    if (resp) {
		Log.d("registrarVehiculo", "Todo bien");
		return true;
	    }
	} catch (IOException e) {
	    e.printStackTrace();
	    Log.e("registrarVehiculo", "ERROR 1: " + e.getMessage() + " : " + e.getCause());
	} catch (JSONException e) {
	    e.printStackTrace();
	    Log.e("registrarVehiculo", "ERROR 2: " + e.getMessage() + " : " + e.getCause());
	} catch (Exception e) {
	    e.printStackTrace();
	    Log.e("registrarVehiculo", "ERROR 3: " + e.getMessage() + " : " + e.getCause());
	}
	Log.d("registrarVehiculo", "Todo bien");
	return false;
    }

    public static Boolean eliminarVehiculo(ArrayList<Vehiculo> veh) {
	Log.d("eliminarVehiculo", "EMPEZO A ELIMINAR");
	try {
	    ArrayList<NameValuePair> parametros = new ArrayList<NameValuePair>();

	    for (int i = 0, j = 0; i < veh.size(); i++) {
		String nombre = "ids[" + j + "]";
		if (veh.get(i).getSeleccionado()) {
		    String id = String.valueOf(veh.get(i).getId());

		    parametros.add(new BasicNameValuePair(nombre, id));
		    j++;
		}
	    }

	    ConexionServidor con = new ConexionServidor();
	    JSONObject respuestaJSON = con.ejecutarHttpPost(parametros, ConexionServidor.URL_ELIMINAR_VEHICULO);
	    Boolean resp = respuestaJSON.getBoolean("respuesta");
	    if (resp) {
		Log.d("eliminarVehiculo", "Todo bien");
		return true;
	    }
	} catch (IOException e) {
	    e.printStackTrace();
	    Log.e("eliminarVehiculo", "ERROR 1: " + e.getMessage() + " : " + e.getCause());
	} catch (JSONException e) {
	    e.printStackTrace();
	    Log.e("eliminarVehiculo", "ERROR 2: " + e.getMessage() + " : " + e.getCause());
	} catch (Exception e) {
	    e.printStackTrace();
	    Log.e("eliminarVehiculo", "ERROR 3: " + e.getMessage() + " : " + e.getCause());
	}
	Log.d("eliminarVehiculo", "Todo bien");
	return false;
    }

    public int getId() {
	return id;
    }

    public void setId(int id) {
	this.id = id;
    }

    public String getPatente() {
	return patente;
    }

    public void setPatente(String patente) {
	this.patente = patente;
    }

    public String getMarca() {
	return marca;
    }

    public void setMarca(String marca) {
	this.marca = marca;
    }

    public String getModelo() {
	return modelo;
    }

    public void setModelo(String modelo) {
	this.modelo = modelo;
    }

    public String getCarroceriaNombre() {
	return carroceriaNombre;
    }

    public void setCarroceriaNombre(String carroceria) {
	this.carroceriaNombre = carroceria;
    }

    public void setCarroceria(Carroceria carroceria) {
	this.carroceria = carroceria;
    }

    public Boolean getSeleccionado() {
	return seleccionado;
    }

    public void setSeleccionado(Boolean seleccionado) {
	this.seleccionado = seleccionado;
    }

    public Carroceria getCarroceria() {
	return carroceria;
    }

}
