package edu.uoc.prezmm.a1list2cook;

import android.app.ProgressDialog;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

import com.loopj.android.http.*;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

import cz.msebera.android.httpclient.Header;

public class LoginActivity extends BaseActivity {
    private ArrayList resultSucces, resultMessage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Defineix el contingut del layout de la Activity dins el frame de la classe pare
        setLayoutToBaseFrame(R.layout.activity_login);

        //Ocultar ToolBar
        hideToolBar();
    }

    //Validar Login
    public void Login(View view) {
        EditText userText = (EditText) findViewById(R.id.emailField);
        EditText passText = (EditText) findViewById(R.id.passField);

        String userValue = userText.getText().toString();
        String passValue = passText.getText().toString();

        if(loginCheckValues(userValue,passValue)) {
            loginCheck(userValue,passValue);
        } else {
            showMessage("Introdueix l'e-mail i la contrasenya");
        }
    }

    //Validar el valors del Login
    protected static boolean loginCheckValues(String userText, String passText) {
        boolean returnValue = false;

        if (userText.length() != 0 && passText.length() != 0) returnValue = true;

        return returnValue;
    }

    //Validar Login amb la base de dades
    private void loginCheck(String userText,String passText) {
        resultSucces = new ArrayList();
        resultMessage = new ArrayList();

        //Parametres per passar al WebService
        RequestParams params = new RequestParams();
        params.put("mail", userText);
        params.put("pass", passText);

        //Missatge mentre s'està executant el procés de validació
        final ProgressDialog progressDialog = new ProgressDialog(this);

        //Creació de la connecció amb el WebService
        AsyncHttpClient client = new AsyncHttpClient();
        client.get("http://1list2cook.com/webservices/user_login.php", params, new JsonHttpResponseHandler() {
            @Override
            public void onStart() {
                progressDialog.setMessage("Validant accés...");
                progressDialog.show();
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                progressDialog.dismiss();
                try {
                    JSONObject jsonArray = new JSONObject(response.toString());
                    if (jsonArray.get("success").toString().equalsIgnoreCase("1")) {
                        JSONArray userInfo = new JSONArray(jsonArray.get("message").toString());

                        //Guardar info de l'usuari en la sessió
                        String userCode = userInfo.getJSONObject(0).get("userIden").toString();
                        String userName = userInfo.getJSONObject(0).get("userName").toString();
                        String userMail = userInfo.getJSONObject(0).get("userEmail").toString();
                        SharedPreferences prefs = getSharedPreferences("UserInfo", Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = prefs.edit();
                        editor.putString("userCode", userCode);
                        editor.putString("userName", userName);
                        editor.putString("userMail", userMail);
                        editor.commit();
                        changeActivity(HomeActivity.class);
                    } else {
                        showMessage(jsonArray.get("message").toString());
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(int statusCode, Header[] headers, String res, Throwable t) {
                progressDialog.dismiss();
                showMessage("No s'ha pogut gestionar l'operació, intenta-ho de nou. Disculpa les molèsties.");
            }
        });
    }

    //Canviar a la Activity Register
    public void changeToRegister(View view) {
        changeActivity(RegisterActivity.class);
    }

    //Canviar a la Activity Register
    public void changeToRestorePass(View view) {
        changeActivity(RestorePassActivity.class);
    }
}
