package com.odc.beachodc.webservices;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import com.android.volley.*;
import com.android.volley.Response;
import com.android.volley.toolbox.ImageRequest;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.JsonObjectRequest;
import com.facebook.android.Util;
import com.google.android.gms.maps.model.LatLng;
import com.odc.beachodc.R;
import com.odc.beachodc.db.models.Checkin;
import com.odc.beachodc.db.models.Comentario;
import com.odc.beachodc.db.models.Imagen;
import com.odc.beachodc.db.models.MensajeBotella;
import com.odc.beachodc.db.models.Playa;
import com.odc.beachodc.utilities.Geo;
import com.odc.beachodc.utilities.Utilities;
import com.odc.beachodc.utilities.ValidacionPlaya;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import de.keyboardsurfer.android.widget.crouton.Crouton;
import de.keyboardsurfer.android.widget.crouton.Style;
import static com.odc.beachodc.utilities.Utilities.*;
/**
* Created by Paco on 15/07/2014.
*/
public class Request {
/*public static void getPlayas (final Context ctx){
final String URL = Config.getURLServer(ctx)+"/playas";
JsonArrayRequest req = new JsonArrayRequest(URL, new Response.Listener<JSONArray> () {
@Override
public void onResponse(JSONArray response) {
com.odc.beachodc.webservices.Response.responseGetPlaya(ctx, response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(ctx, req);
}*/
public static void editarPlaya (final Activity activity, Playa playa, final boolean isNew) {
final String URL;
if (isNew)
URL = Config.getURLServer(activity)+"/nuevaplaya";
else
URL = Config.getURLServer(activity)+"/editarplaya/"+playa.idserver;
// Post params to be sent to the server
HashMap<String, String> params = new HashMap<String, String>();
params.put("nombre", playa.nombre);
params.put("lon", playa.longitud.toString());
params.put("lat", playa.latitud.toString());
params.put("banderaazul", playa.banderaazul.toString());
params.put("acceso", playa.dificultadacceso);
params.put("arena", playa.tipoarena);
params.put("limpieza", playa.limpieza);
params.put("rompeolas", playa.rompeolas.toString());
params.put("hamacas", playa.hamacas.toString());
params.put("sombrillas", playa.sombrillas.toString());
params.put("chiringuitos", playa.chiringuitos.toString());
params.put("duchas", playa.duchas.toString());
params.put("socorrista", playa.socorrista.toString());
params.put("perros", playa.perros.toString());
params.put("nudista", playa.nudista.toString());
params.put("cerrada", playa.cerrada.toString());
// TODO: En un futuro que los usuarios puedan aƱadir CAMs
params.put("webcamURL", "");
JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (isNew)
com.odc.beachodc.webservices.Response.responseNuevaPlaya(activity, response);
else
com.odc.beachodc.webservices.Response.responseEditarPlaya(activity, response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(activity, req);
}
public static void peticionBorrarPlaya (final Activity activity, final Playa playa, final ProgressDialog pd) {
final String URL = Config.getURLServer(activity)+"/borrarplaya/"+playa.idserver;
// Post params to be sent to the server
HashMap<String, String> params = new HashMap<String, String>();
JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
com.odc.beachodc.webservices.Response.responsePeticionBorradoPlaya(activity, response, pd);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
pd.dismiss();
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(activity, req);
}
public static void valorarPlaya (final Activity activity, final Comentario comentario, final ProgressDialog pd) {
final String URL = Config.getURLServer(activity)+"/valoracionplaya/"+comentario.idplaya+"/"+comentario.idfbautor;
// Post params to be sent to the server
HashMap<String, String> params = new HashMap<String, String>();
params.put("valoracion", comentario.valoracion.toString());
params.put("nombreautor", Utilities.getUserNameFacebook(activity));
params.put("fecha", Utilities.formatFecha(comentario.fecha));
params.put("comentario", comentario.comentario);
JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
com.odc.beachodc.webservices.Response.responseValorarPlaya(activity, response, comentario, pd);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.dismiss();
VolleyLog.e("Error: ", error.getMessage());
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(activity, req);
}
public static void mensajeBotellaPlaya (final Activity activity, final MensajeBotella mensaje, final ProgressDialog pd) {
final String URL = Config.getURLServer(activity)+"/mensajebotellaplaya/"+mensaje.idserverplayaorigen+"/"+mensaje.idfbautor;
// Post params to be sent to the server
HashMap<String, String> params = new HashMap<String, String>();
params.put("fecha", formatFecha(mensaje.fecha));
params.put("mensaje", mensaje.mensaje);
params.put("nombreAutor", mensaje.nombreautor);
params.put("nombrePlaya", mensaje.nombreplayadestino);
JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
com.odc.beachodc.webservices.Response.responseMensajeBotellaPlaya(activity, response, mensaje, pd);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
pd.dismiss();
VolleyLog.e("Error: ", error.getMessage());
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(activity, req);
}
public static void getPlayasCercanas (final Context ctx, final ProgressDialog pd){
if (Geo.myLocation != null) {
final String URL = Config.getURLServer(ctx) + "/playascercanas/" + Geo.myLocation.getLatitude() + "/" + Geo.myLocation.getLongitude();
JsonArrayRequest req = new JsonArrayRequest(URL, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
com.odc.beachodc.webservices.Response.responseGetPlayasCercanas(ctx, response, pd);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
ValidacionPlaya.cargadaPlayas=true;
if ((ValidacionPlaya.cargadosUltimosCheckins) && (pd != null) && (pd.isShowing())) {
pd.dismiss();
}
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(ctx, req);
} else {
ValidacionPlaya.cargadaPlayas=true;
if ((ValidacionPlaya.cargadosUltimosCheckins) && (pd != null) && (pd.isShowing())) {
pd.dismiss();
}
}
}
public static void getUltimosCheckins (final Context ctx, final ProgressDialog pd){
if (Utilities.isAnonymous(ctx)){
ValidacionPlaya.cargadosUltimosCheckins=true;
if ((ValidacionPlaya.cargadaPlayas) && (pd != null) && (pd.isShowing())) {
pd.dismiss();
}
return;
}
final String URL = Config.getURLServer(ctx)+"/ultimoscheckins/"+ getUserIdFacebook(ctx);
JsonArrayRequest req = new JsonArrayRequest(URL, new Response.Listener<JSONArray> () {
@Override
public void onResponse(JSONArray response) {
com.odc.beachodc.webservices.Response.responseGetUltimosCheckins(ctx, response, pd);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
ValidacionPlaya.cargadosUltimosCheckins=true;
if ((ValidacionPlaya.cargadaPlayas) && (pd != null) && (pd.isShowing())) {
pd.dismiss();
}
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(ctx, req);
}
public static void nuevoCheckinPlaya (final Activity activity, Checkin checkin, final ProgressDialog pd) {
final String URL = Config.getURLServer(activity)+"/checkin/"+checkin.idfbuser+"/"+checkin.idplayaserver;
// Post params to be sent to the server
HashMap<String, String> params = new HashMap<String, String>();
params.put("fecha", formatFecha(checkin.fecha));
JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
com.odc.beachodc.webservices.Response.responseCheckinPlaya(activity, response, pd);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
pd.dismiss();
Crouton.makeText(activity, R.string.error_unknown, Style.ALERT).show();
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(activity, req);
}
public static void getPlayasCercanasTo (final Context ctx, final String direccion, final Double latitud, final Double longitud, final ProgressDialog pd){
final String URL = Config.getURLServer(ctx) + "/playascercanas/" + latitud + "/" + longitud;
JsonArrayRequest req = new JsonArrayRequest(URL, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
com.odc.beachodc.webservices.Response.responseGetPlayasCercanasTo(ctx, response, pd, direccion, latitud, longitud);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
pd.dismiss();
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(ctx, req);
}
public static void getPlayasByName (final Context ctx, final String name, final ProgressDialog pd){
final String URL = Config.getURLServer(ctx) + "/playasbyname/" + name.replaceAll(" ", "%20");
JsonArrayRequest req = new JsonArrayRequest(URL, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
com.odc.beachodc.webservices.Response.responseGetPlayasByName(ctx, response, pd, name);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
pd.dismiss();
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(ctx, req);
}
public static void getPlayasByExtras (final Context ctx, final String name, final LatLng direccion, final Playa playa, final ProgressDialog pd){
HashMap<String, String> params = new HashMap<String, String>();
if (name != null)
params.put("nombre", name.replaceAll(" ", "%20"));
else
params.put("nombre", null);
if (direccion != null) {
params.put("lon", String.valueOf(direccion.longitude));
params.put("lat", String.valueOf(direccion.latitude));
} else {
if (name == null) {
if (Geo.myLocation != null) {
params.put("lon", String.valueOf(Geo.myLocation.getLongitude()));
params.put("lat", String.valueOf(Geo.myLocation.getLatitude()));
} else {
params.put("lon", null);
params.put("lat", null);
}
} else {
params.put("lon", null);
params.put("lat", null);
}
}
if (playa.banderaazul != null)
params.put("banderaazul", playa.banderaazul.toString());
else
params.put("banderaazul", null);
params.put("acceso", playa.dificultadacceso);
params.put("arena", playa.tipoarena);
params.put("limpieza", playa.limpieza);
if (playa.rompeolas != null)
params.put("rompeolas", playa.rompeolas.toString());
else
params.put("rompeolas", null);
if (playa.hamacas != null)
params.put("hamacas", playa.hamacas.toString());
else
params.put("hamacas", null);
if (playa.sombrillas != null)
params.put("sombrillas", playa.sombrillas.toString());
else
params.put("sombrillas", null);
if (playa.chiringuitos != null)
params.put("chiringuitos", playa.chiringuitos.toString());
else
params.put("chiringuitos", null);
if (playa.duchas != null)
params.put("duchas", playa.duchas.toString());
else
params.put("duchas", null);
if (playa.socorrista != null)
params.put("socorrista", playa.socorrista.toString());
else
params.put("socorrista", null);
if (playa.perros != null)
params.put("perros", playa.perros.toString());
else
params.put("perros", null);
if (playa.nudista != null)
params.put("nudista", playa.nudista.toString());
else
params.put("nudista", null);
if (playa.cerrada != null)
params.put("cerrada", playa.cerrada.toString());
else
params.put("cerrada", null);
final String URL = Config.getURLServer(ctx) + "/playasbyextras/" + params.get("nombre") +
"/" + params.get("lon") +
"/" + params.get("lat") +
"/" + params.get("banderaazul") +
"/" + params.get("acceso") +
"/" + params.get("arena") +
"/" + params.get("limpieza") +
"/" + params.get("rompeolas") +
"/" + params.get("hamacas") +
"/" + params.get("sombrillas") +
"/" + params.get("chiringuitos") +
"/" + params.get("duchas") +
"/" + params.get("socorrista") +
"/" + params.get("perros") +
"/" + params.get("nudista") +
"/" + params.get("cerrada") ;
JsonArrayRequest req = new JsonArrayRequest(URL, new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
com.odc.beachodc.webservices.Response.responseGetPlayasByExtra(ctx, response, pd);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
pd.dismiss();
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(ctx, req);
}
public static void getMensajesBotella (final Context ctx, String idPlaya, final ProgressDialog pd, final Intent intent){
final String URL = Config.getURLServer(ctx)+"/mensajesplaya/"+idPlaya;
ValidacionPlaya.mensajesBotella = new ArrayList<MensajeBotella>();
JsonArrayRequest req = new JsonArrayRequest(URL, new Response.Listener<JSONArray> () {
@Override
public void onResponse(JSONArray response) {
com.odc.beachodc.webservices.Response.responseGetMensajesBotella(ctx, response, pd, intent);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
ValidacionPlaya.cargadosMensajesPlaya=true;
if (ValidacionPlaya.comprobarCargaPlaya(ctx, intent)){
pd.dismiss();
}
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(ctx, req);
}
public static void getImagenesPlaya (final Context ctx, String idPlaya, final ProgressDialog pd, final Intent intent){
final String URL = Config.getURLServer(ctx)+"/imagenesplaya/"+idPlaya;
ValidacionPlaya.imagenes = new ArrayList<Imagen>();
JsonArrayRequest req = new JsonArrayRequest(URL, new Response.Listener<JSONArray> () {
@Override
public void onResponse(JSONArray response) {
com.odc.beachodc.webservices.Response.responseGetImagenesPlaya(ctx, response, pd, intent);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
ValidacionPlaya.cargadaImagenes=true;
if (ValidacionPlaya.comprobarCargaPlaya(ctx, intent)){
pd.dismiss();
}
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(ctx, req);
}
public static void getComentariosPlaya (final Context ctx, String idPlaya, final ProgressDialog pd, final Intent intent){
final String URL = Config.getURLServer(ctx)+"/comentariosplaya/"+idPlaya;
ValidacionPlaya.comentariosPlaya = new ArrayList<Comentario>();
JsonArrayRequest req = new JsonArrayRequest(URL, new Response.Listener<JSONArray> () {
@Override
public void onResponse(JSONArray response) {
com.odc.beachodc.webservices.Response.responseGetComentariosPlaya(ctx, response, pd, intent);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
ValidacionPlaya.cargadosComentarios=true;
if (ValidacionPlaya.comprobarCargaPlaya(ctx, intent)){
pd.dismiss();
}
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(ctx, req);
}
//Uilizamos openweathermap para tomar temperaturas geolocalizadas
public static void getTemp(final Context ctx, double lat, double lon, final ProgressDialog pd, final Intent intent) {
final String URL = "http://api.openweathermap.org/data/2.5/find?lat=" + lat + "&lon=" + lon + "&cnt=1";
JsonObjectRequest req = new JsonObjectRequest(URL, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
com.odc.beachodc.webservices.Response.responseGetTemp(ctx, response, pd, intent);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
ValidacionPlaya.cargadaTemperatura=true;
if (ValidacionPlaya.comprobarCargaPlaya(ctx, intent)){
pd.dismiss();
}
}
}
);
// add the request object to the queue to be executed
Config.addToRequestQueue(ctx, req);
}
public static void nuevaImagenPlaya (final Activity activity, final Imagen imagen, final ProgressDialog pd) {
final String URL = Config.getURLServer(activity)+"/nuevaimagen/"+imagen.idplaya+"/"+imagen.idfbautor;
// Post params to be sent to the server
HashMap<String, String> params = new HashMap<String, String>();
params.put("nombreAutor", imagen.nombreautor);
params.put("comentario", imagen.comentario);
params.put("link", imagen.link);
params.put("fecha", formatFecha(imagen.fecha));
JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params),
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
com.odc.beachodc.webservices.Response.responseNuevaImagenPlaya(activity, response, pd, imagen);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error: ", error.getMessage());
pd.dismiss();
Crouton.makeText(activity, R.string.error_unknown, Style.ALERT).show();
}
});
// add the request object to the queue to be executed
Config.addToRequestQueue(activity, req);
}
}