package mx.ambmultimedia.brillamexico.activities;
import android.content.Context;
import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.text.Html;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import org.apache.http.Header;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import mx.ambmultimedia.brillamexico.R;
import mx.ambmultimedia.brillamexico.utils.Config;
/**
* Clase para el Activity de los logros
*/
public class Logro extends ActionBarActivity {
// Shalala, shalala... almacenamos información del activity
Context ctx;
Config config;
String fbID;
String hostname;
AsyncHttpClient client;
int pointsLogro = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logro);
ctx = this;
config = new Config(ctx);
fbID = config.get("fbID", "0");
hostname = getString(R.string.hostname);
client = new AsyncHttpClient();
// Obtenemos información del activity anterior, en este caso, la referencia y el ID del logro
Bundle bundle = getIntent().getExtras();
String logroID = bundle.getString("LogroID");
final String Reference = bundle.getString("Reference");
// Construimos vista del logro
ImageView icon = (ImageView) findViewById(R.id.iconLogro);
String LogroName = "";
switch (logroID) {
case "1":
LogroName = "Nuevo Usuario";
pointsLogro = 50;
icon.setImageResource(R.drawable.l_newuser);
break;
case "2":
LogroName = "Perfil Completo";
pointsLogro = 50;
icon.setImageResource(R.drawable.l_perfilcompleto);
break;
case "3":
LogroName = "Don Compromisos";
pointsLogro = 50;
icon.setImageResource(R.drawable.l_doncompromisos);
break;
case "4":
LogroName = "Super Comprometido";
pointsLogro = 100;
icon.setImageResource(R.drawable.l_supercomprometido);
break;
case "5":
LogroName = "Viralizador";
pointsLogro = 100;
icon.setImageResource(R.drawable.l_viralizador);
break;
case "6":
LogroName = "Twitter Lover";
pointsLogro = 50;
icon.setImageResource(R.drawable.l_twitterlover);
break;
}
TextView name = (TextView) findViewById(R.id.nameLogro);
String LogroNameText = getString(R.string.l_text_logro);
LogroNameText = LogroNameText.replaceAll("__logroname__", LogroName);
name.setText(Html.fromHtml(LogroNameText));
TextView points = (TextView) findViewById(R.id.pointsLogro);
points.setText(pointsLogro + " puntos");
// Agregamos logro al usuario
addLogro(logroID);
// Click para continuar
Button toContinue = (Button) findViewById(R.id.toContinue);
toContinue.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
continueActivity(Reference);
}
});
}
/**
* Método para continuar con la navegación
* @param ref a dónde nos llevará el activity
*/
private void continueActivity (String ref) {
config.get("isReload", "true");
Intent intent;
switch (ref) {
case "EditUser":
// Si venimos de editar al usuario, lo llevamos al perfil
intent = new Intent(Logro.this, UserProfile.class);
break;
case "Register":
// Si venimos del registro, lo mandamos a la primera selfie
intent = new Intent(Logro.this, Preselfie.class);
break;
case "Selfie":
// Si venimos de subir una selfie, lo mandamos al landing de la selfie que se acaba de subir
Bundle bundle = getIntent().getExtras();
String selfieID = bundle.getString("selfieID");
intent = new Intent(Logro.this, Selfie.class);
intent.putExtra("selfieID", selfieID);
break;
case "TwitterLinked":
// Si venimos de vincular twitter, lo mandamos al view de editar perfil
intent = new Intent(Logro.this, EditUserInfo.class);
break;
default:
// Si viene de algún otro lado, lo mandamos al perfil de usuario
intent = new Intent(Logro.this, UserProfile.class);
break;
}
startActivity(intent);
this.finish();
}
/**
* Método para añadir logro
* @param logroID ID del logro a añadir
*/
private void addLogro (String logroID) {
// COnstruímos parámetros POST
RequestParams params = new RequestParams();
params.put("logro", logroID);
// Hacemos la petición
client.post(hostname + "/user/logro/" + fbID, params, new JsonHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
// Si va bien, probamos
try {
// Obtenemos el status que devuelve
String status = response.getString("status");
// Si es "succes", añadimos los puntos
if (status == "success") {
// Vacio, sólo útil para el try ... catch
}
// Si no se encuentra "status", significa que el logro ya existía. Avisamos
} catch (JSONException e) {
Toast.makeText(ctx, "Ya tenías este logro", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(int statusCode, Header[] headers, String response, Throwable e) {
// Si algo sale mal, informamos
String msg = "[" + statusCode + "|u/logro] " + e.getMessage();
Toast.makeText(ctx, msg, Toast.LENGTH_LONG).show();
}
});
}
}