package org.example.proyecto;

import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Bitmap;

import org.json.JSONObject;

import java.util.Calendar;

/**
 * Created by Victor on 19/09/2016.
 */
public class AlmacenCiudadesPreferencias {
    private static String PREFERENCIAS = "ciudades";
    private Context context;

    public JSONObject jObj,sysObj;

    public float lon,lat,temp,pressure,humidity,temp_min,temp_max,speed,deg,rain;
    public String weatherMain,description,icon,country,name;
    public String windDirection = null;
    public int weatherId,sunrise,sunset;

    public Bitmap bitmapIcon;


    Calendar calendar = Calendar.getInstance();


    public AlmacenCiudadesPreferencias(Context context) {
        this.context = context;
    }

    /*
    public void guardarCiudad(String nombreCiudad, AdaptadorCiudades adaptador) {
        SharedPreferences preferencias =context.getSharedPreferences(
                PREFERENCIAS, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferencias.edit();

        editor.putString("ciudad"+(adaptador.vectorCiudades.size()-1),nombreCiudad);
        editor.putBoolean("seleccionada"+(adaptador.vectorCiudades.size()-1),false);

        editor.commit();
    }

    public void borrarCiudad(int i,AdaptadorCiudades adaptador) {
        SharedPreferences preferencias =context.getSharedPreferences(
                PREFERENCIAS, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferencias.edit();

        while(i<adaptador.vectorCiudades.size()-1){

            editor.putString("ciudad"+i,preferencias.getString("ciudad"+(i+1),""));
            if (preferencias.getBoolean("seleccionada"+(i+1),true))
                editor.putBoolean("seleccionada"+i,true);
            i++;
        }

        editor.putString("ciudad"+(adaptador.vectorCiudades.size()-1),"");
        editor.putBoolean("seleccionada"+(adaptador.vectorCiudades.size()-1),false);

    }

    public void ciudadSeleccionada(int i,boolean b){
        SharedPreferences preferencias =context.getSharedPreferences(
                PREFERENCIAS, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferencias.edit();

        editor.putBoolean("seleccionada"+i,b);
    }


    public Vector<String> listaCiudadesStr(AdaptadorCiudades adaptador) {
        Vector<String> result = new Vector<String>();
        SharedPreferences preferencias =context.getSharedPreferences(
                PREFERENCIAS, Context.MODE_PRIVATE);


        for (int i=0;i<adaptador.vectorCiudades.size();i++){
            String s = preferencias.getString("ciudad"+i,"");
            if (s != "")
                result.add(s);
        }
        return result;
    }*/





    public void actualizarVectorCiudades(AdaptadorCiudades adaptador){
        SharedPreferences preferencias =context.getSharedPreferences(PREFERENCIAS, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = preferencias.edit();

        for (int i=0;i<adaptador.vectorCiudades.size();i++) {
            String s = adaptador.vectorCiudades.elementAt(i).nombreCiudadUrl;
            editor.putString("ciudad"+i,s);
            editor.putBoolean("seleccionada"+i, adaptador.vectorCiudades.elementAt(i).seleccionada);
            editor.commit();
        }


        int i = adaptador.vectorCiudades.size();
        String s = preferencias.getString("ciudad"+i,"");

        while (s!=""){
            editor.putString("ciudad"+i,"");
            editor.commit();
            i++;
            s = preferencias.getString("ciudad"+i,"");
        }
    }



    public void getVectorCiudades(AdaptadorCiudades adaptador){
        SharedPreferences preferencias =context.getSharedPreferences(
                PREFERENCIAS, Context.MODE_PRIVATE);

        int i = 0;
        String s = preferencias.getString("ciudad"+i,"");

        while (s!=""){

            anadirCiudad(s,adaptador);

            if (preferencias.getBoolean("seleccionada"+i,true)){
                adaptador.vectorCiudades.elementAt(i).seleccionada = true;
            }

            i++;
            s = preferencias.getString("ciudad"+i,"");
        }
    }


    public void anadirCiudad(String nombreCiudad,AdaptadorCiudades adaptador){

        adaptador.obtenerClima(nombreCiudad);

        this.weatherId = adaptador.weatherId;
        this.description = adaptador.description;
        this.weatherMain = adaptador.weatherMain;
        this.icon = adaptador.icon;
        this.bitmapIcon = adaptador.bitmapIcon;
        this.temp = adaptador.temp;
        this.pressure = adaptador.pressure;
        this.humidity = adaptador.humidity;
        this.temp_min = adaptador.temp_min;
        this.temp_max = adaptador.temp_max;
        this.sunrise = adaptador.sunrise;
        this.sunset = adaptador.sunset;
        this.speed = adaptador.speed;
        this.windDirection = adaptador.windDirection;
        this.rain = adaptador.rain;

        //bitmapIcon = adaptador.obtenerIcono(this.icon);

        Ciudad nuevaCiudad = new Ciudad (adaptador.name,adaptador.lon,
                adaptador.lat,adaptador.country);

        adaptador.vectorCiudades.add(nuevaCiudad);

        int i = adaptador.vectorCiudades.size()-1;

        adaptador.vectorCiudades.elementAt(i).nombreCiudadUrl = nombreCiudad;

        adaptador.vectorCiudades.elementAt(i).tiempoActual.weatherId = this.weatherId;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.description = this.description;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.weatherMain = this.weatherMain;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.bitmapIcon = this.bitmapIcon;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.temp = this.temp;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.pressure = this.pressure;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.humidity = this.humidity;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.temp_min = this.temp_min;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.temp_max = this.temp_max;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.sunrise = this.sunrise;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.sunset = this.sunset;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.speed = this.speed;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.windDirection = this.windDirection;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.rain = this.rain;
        adaptador.vectorCiudades.elementAt(i).tiempoActual.actualizacion =
                String.valueOf(calendar.get(Calendar.HOUR_OF_DAY) + ":" +
                        String.valueOf(calendar.get(Calendar.MINUTE)) + ":" +
                        String.valueOf(calendar.get(Calendar.SECOND)) + " " +
                        String.valueOf(calendar.get(Calendar.DAY_OF_MONTH)) +"/"+
                        String.valueOf((calendar.get(Calendar.MONTH))+1)+"/"+
                        String.valueOf(calendar.get(Calendar.YEAR)));


        adaptador.obtenerPrediccion(nombreCiudad,i);

    }
}
