package edu.uoc.prezmm.a1list2cook;

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

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;

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

import cz.msebera.android.httpclient.Header;

public class RegisterActivity extends BaseActivity {
    @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_register);

        //Canvia el títol del ToolBar
        setToolBarTitle("Registre");

        //Ocultar la icona de menu del ToolBar
        hideToolBarMenu();
    }

    public void validateForm(View v) {
        EditText nameField = (EditText)findViewById(R.id.nameField);
        EditText emailField = (EditText)findViewById(R.id.emailField);
        EditText pass1Field = (EditText)findViewById(R.id.recipeNameField);
        EditText pass2Field = (EditText)findViewById(R.id.recipeCategoryField);

        String nameText = nameField.getText().toString();
        String emailText = emailField.getText().toString();
        String pass1Text = pass1Field.getText().toString();
        String pass2Text = pass2Field.getText().toString();

        if(formCheckValue(nameText) && formCheckValue(emailText) && formCheckValue(pass1Text) && formCheckValue(pass2Text)) {
            if(equalValues(pass1Text,pass2Text)) {
                registerUser(nameText,emailText,pass1Text);
            } else {
                showMessage("Les contrasenyes no coincideixen.");
                pass1Field.requestFocus();
            }
        } else {
            showMessage("Cal omplir tots els camps.");
        }
    }

    //Comprova que el valor no estigui buit
    protected static boolean formCheckValue(String value) {
        boolean result = false;
        if(value.length() > 0) result = true;
        return result;
    }

    //Comprova que els dos valors siguin iguals
    protected static boolean equalValues(String value1,String value2) {
        return value1.equalsIgnoreCase(value2);
    }

    //Funció per registrar l'usuari
    private void registerUser(String nameText,String emailText,String passText) {
        //Parametres per passar al WebService
        RequestParams params = new RequestParams();
        params.put("name", nameText);
        params.put("email", emailText);
        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_register.php", params, new JsonHttpResponseHandler() {
            @Override
            public void onStart() {
                progressDialog.setMessage("Registrant usuari...");
                progressDialog.show();
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                progressDialog.dismiss();
                try {
                    JSONObject jsonArray = new JSONObject(response.toString());
                    switch(jsonArray.get("success").toString()) {
                        case "1":
                            showMessage("Usuari registrat correctament, ja pots accedir amb les dades introduïdes. Gràcies per registrar-te.");
                            changeActivity(LoginActivity.class);
                            break;
                        case "0":
                            showMessage("No s'ha pogut registrar, intenta-ho de nou. Disculpa les molèsties.");
                            break;
                        case "2":
                            showMessage("L'e-mail introduït ja està en ús, especifiquen un altre.");
                            break;
                    }
                } 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.");
            }
        });
    }
}
