package edu.uoc.prezmm.a1list2cook;

import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.support.constraint.ConstraintLayout;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.TextView;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.JsonHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.squareup.picasso.Picasso;

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

import java.util.ArrayList;

import cz.msebera.android.httpclient.Header;
import edu.uoc.prezmm.a1list2cook.objects_class.Ingredients;
import edu.uoc.prezmm.a1list2cook.objects_class.Lists;
import edu.uoc.prezmm.a1list2cook.objects_class.Recipes;
import edu.uoc.prezmm.a1list2cook.objects_class.Steps;
import edu.uoc.prezmm.a1list2cook.objects_class.Users;

public class RecipeDetailActivity extends BaseActivity {

    private ViewPager viewPager;
    private ConstraintLayout resumPage;
    private ConstraintLayout ingredientsPage;
    private ConstraintLayout stepsPage;
    private Button resumButton;
    private Button ingredientsButton;
    private Button stepsButton;

    private ArrayList<Recipes> recipesArrayList;
    private ArrayList<Ingredients> ingredientsArrayList;
    private ArrayList<Steps> stepsArrayList;
    private String recipeCode;
    private String recipeRations;
    private String recipeTime;


    private RecipeDetailActivity.RecipesAdapterPage01 adapterPage01;
    private ListView recipesListPage01;
    private RecipeDetailActivity.RecipesAdapterPage02 adapterPage02;
    private ListView recipesListPage02;
    private RecipeDetailActivity.RecipesAdapterPage03 adapterPage03;
    private ListView recipesListPage03;

    private ArrayList<Lists> listsArrayList;

    @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_recipe_detail);

        //Recupera el valor del Extra
        Intent intent = getIntent();
        recipeCode = intent.getStringExtra("idRecipe");

        //Estableix l'adaptador al ViewPage
        viewPager = (ViewPager)findViewById(R.id.detailsViewPager);
        viewPager.setAdapter(new AdminPageAdapter());
        viewPager.setOffscreenPageLimit(2);

        //Definicio dels botons de canvi de vista
        resumButton = (Button) findViewById(R.id.resumButton);
        ingredientsButton = (Button) findViewById(R.id.ingredientsButton);
        stepsButton = (Button) findViewById(R.id.stepsButton);

        //Inicialitzar arrays necessaris
        recipesArrayList = new ArrayList<Recipes>();
        ingredientsArrayList = new ArrayList<Ingredients>();
        stepsArrayList = new ArrayList<Steps>();

        //Estableix escoltador del canvi de pàgina del ViewPager
        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            public void onPageScrollStateChanged(int state) {    }
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                setViewPageButtonColor(position);
            }
            public void onPageSelected(int position) {}
        });
    }
    class AdminPageAdapter extends PagerAdapter {

        @Override
        public int getCount()
        {
            return 3;
        }

        @Override
        public Object instantiateItem(ViewGroup collection, int position) {
            View pageDisplay = null;

            //Estableix un layout per cada posició
            switch (position) {
                case 0:
                    if (resumPage == null) {
                        resumPage = (ConstraintLayout) LayoutInflater.from(RecipeDetailActivity.this).inflate(R.layout.activity_recipe_detail_page01, null);
                        setContentPage01();
                    }
                    pageDisplay = resumPage;
                    break;
                case 1:
                    if (ingredientsPage == null) {
                        ingredientsPage = (ConstraintLayout) LayoutInflater.from(RecipeDetailActivity.this).inflate(R.layout.activity_recipe_detail_page02, null);
                        setContentPage02();
                    }
                    pageDisplay = ingredientsPage;
                    break;
                case 2:
                    if (stepsPage == null) {
                        stepsPage = (ConstraintLayout) LayoutInflater.from(RecipeDetailActivity.this).inflate(R.layout.activity_recipe_detail_page03, null);
                        setContentPage03();
                    }
                    pageDisplay = stepsPage;
                    break;
            }

            ViewPager vp = (ViewPager) collection;
            vp.addView(pageDisplay, 0);

            return pageDisplay;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }

        @Override
        public void destroyItem(View collection, int position, Object view) {
            ((ViewPager) collection).removeView((View) view);
        }
    }

    //Reestableix el color dels bottons i destaca el actual
    private void setViewPageButtonColor(int position) {
        resumButton.setBackgroundColor(ContextCompat.getColor(this, R.color.colorPrimaryLight));
        ingredientsButton.setBackgroundColor(ContextCompat.getColor(this, R.color.colorPrimaryLight));
        stepsButton.setBackgroundColor(ContextCompat.getColor(this, R.color.colorPrimaryLight));

        if(position == 0) resumButton.setBackgroundColor(ContextCompat.getColor(this, R.color.colorPrimary));
        if(position == 1) ingredientsButton.setBackgroundColor(ContextCompat.getColor(this, R.color.colorPrimary));
        if(position == 2) stepsButton.setBackgroundColor(ContextCompat.getColor(this, R.color.colorPrimary));
    }

    //Funcions pel canvi de pantalla mitjançant els botons
    public void irPagina1(View v) {
        viewPager.setCurrentItem(0);
    }

    public void irPagina2(View v) {
        viewPager.setCurrentItem(1);
    }

    public void irPagina3(View v) {
        viewPager.setCurrentItem(2);
    }

    //Estableix el contingut de la pàgina 1
    private void setContentPage01() {
        //Inicialitza l'array amb el ListView
        adapterPage01 = new RecipeDetailActivity.RecipesAdapterPage01(this);
        recipesListPage01 = (ListView)resumPage.findViewById(R.id.listViewPage01);

        //Crida a la funció per recuperar les receptes
        getRecipe(recipeCode);
    }

    //Estableix el contingut de la pàgina 2
    private void setContentPage02() {
        //Inicialitza l'array amb el ListView
        adapterPage02 = new RecipeDetailActivity.RecipesAdapterPage02(this);
        recipesListPage02 = (ListView)ingredientsPage.findViewById(R.id.listViewPage02);


        //Crida a la funció per recuperar els ingredients de la recepta
        getIngredients(recipeCode);
    }

    //Estableix el contingut de la pàgina 3
    private void setContentPage03() {
        //Inicialitza l'array amb el ListView
        adapterPage03 = new RecipeDetailActivity.RecipesAdapterPage03(this);
        recipesListPage03 = (ListView)stepsPage.findViewById(R.id.listViewPage03);


        //Crida a la funció per recuperar els ingredients de la recepta
        getSteps(recipeCode);
    }

    //Afegeix una recepta a l'array de receptes
    private void recipeToArray(Recipes recipe) {
        recipesArrayList.add(recipe);
    }

    //Afegeix un ingredient a l'array de ingredients
    private void ingredientToArray(Ingredients ingredient) { ingredientsArrayList.add(ingredient); }

    //Afegeix un pas a l'array de passos
    private void stepToArray(Steps step) { stepsArrayList.add(step); }

    //Recupera la informació de la recepta
    private void getRecipe(String recipeCode) {
        //Parametres per passar al WebService
        RequestParams params = new RequestParams();
        params.put("reciCode", recipeCode);

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

        //Creació de la connexió amb el WebService
        AsyncHttpClient client = new AsyncHttpClient();
        client.get("http://1list2cook.com/webservices/recipe_info.php", params, new JsonHttpResponseHandler() {
            @Override
            public void onStart() {
                progressDialog.setMessage("Recuperant recepta...");
                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 per generar un nou objecte
                        for(int i = 0; i < userInfo.length(); i++) {
                            String reciCode = userInfo.getJSONObject(i).get("reciIden").toString();
                            String reciCate = userInfo.getJSONObject(i).get("reciCategory").toString();
                            String reciTitl = userInfo.getJSONObject(i).get("reciTitle").toString();
                            String reciText = userInfo.getJSONObject(i).get("reciText").toString();
                            String reciRati = userInfo.getJSONObject(i).get("reciRations").toString();
                            String reciTime = userInfo.getJSONObject(i).get("reciTime").toString();
                            String reciImag = userInfo.getJSONObject(i).get("imagPath").toString();
                            String cateName = userInfo.getJSONObject(i).get("cateName").toString();

                            //Crea el nou objecte amb la informació de la recepta
                            Recipes reciInfo = new Recipes(reciCode, reciTitl, reciText, reciTime, reciRati, reciImag, reciCate, cateName);

                            //Introdueix la recepta a l'array
                            recipeToArray(reciInfo);
                        }

                        //Vincula l'array amb el ListView
                        recipesListPage01.setAdapter(adapterPage01);

                    } 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.");
            }
        });
    }

    //Recupera la informació de la recepta
    private void getIngredients(String recipeCode) {
        //Parametres per passar al WebService
        RequestParams params = new RequestParams();
        params.put("reciCode", recipeCode);

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

        //Creació de la connexió amb el WebService
        AsyncHttpClient client = new AsyncHttpClient();
        client.get("http://1list2cook.com/webservices/recipe_ingredients.php", params, new JsonHttpResponseHandler() {
            @Override
            public void onStart() {
                progressDialog.setMessage("Recuperant ingredients...");
                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 per generar un nou objecte
                        for(int i = 0; i < userInfo.length(); i++) {
                            String ingrIden = userInfo.getJSONObject(i).get("ingrIden").toString();
                            String ingrName = userInfo.getJSONObject(i).get("ingrName").toString();
                            String inreQuantity = userInfo.getJSONObject(i).get("inreQuantity").toString();
                            String reciRations = userInfo.getJSONObject(i).get("reciRations").toString();

                            //Crea el nou objecte amb la informació de la recepta
                            Ingredients ingrInfo = new Ingredients(ingrIden, ingrName,  inreQuantity);

                            //Introdueix la recepta a l'array
                            ingredientToArray(ingrInfo);

                            //Si és el primer ingredient, especifica les racions de la recepta
                            if(i == 0) {
                                recipeRations = reciRations;
                                TextView reationsText = (TextView)findViewById(R.id.reationsText);

                                reationsText.setText("Ingredients per: " + recipeRations );
                            }
                        }

                        //Vincula l'array amb el ListView
                        recipesListPage02.setAdapter(adapterPage02);

                    } 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.");
            }
        });
    }

    //Recupera la informació de la recepta
    private void getSteps(String recipeCode) {
        //Parametres per passar al WebService
        RequestParams params = new RequestParams();
        params.put("reciCode", recipeCode);

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

        //Creació de la connexió amb el WebService
        AsyncHttpClient client = new AsyncHttpClient();
        client.get("http://1list2cook.com/webservices/recipe_steps.php", params, new JsonHttpResponseHandler() {
            @Override
            public void onStart() {
                progressDialog.setMessage("Recuperant passos...");
                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 per generar un nou objecte
                        for(int i = 0; i < userInfo.length(); i++) {
                            String stepIden = userInfo.getJSONObject(i).get("stepIden").toString();
                            String stepText = userInfo.getJSONObject(i).get("stepText").toString();
                            String reciTime = userInfo.getJSONObject(i).get("reciTime").toString();

                            //Crea el nou objecte amb la informació de la recepta
                            Steps stepInfo = new Steps(stepIden, stepText);

                            //Introdueix la recepta a l'array
                            stepToArray(stepInfo);

                            //Si és el primer ingredient, especifica les racions de la recepta
                            if(i == 0) {
                                recipeTime = reciTime;
                                TextView timeText = (TextView)findViewById(R.id.timeText);
                                timeText.setText("Temps: " + recipeTime );
                            }
                        }

                        //Vincula l'array amb el ListView
                        recipesListPage03.setAdapter(adapterPage03);

                    } 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.");
            }
        });
    }

    //Constructor de la classe per l'adaptador de la pàgina 1
    class RecipesAdapterPage01 extends ArrayAdapter<Recipes> {
        AppCompatActivity appCompatActivity;

        RecipesAdapterPage01(AppCompatActivity context) {
            super(context, R.layout.view_recipe_detail_page01, recipesArrayList);
            appCompatActivity = context;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = appCompatActivity.getLayoutInflater();
            View item = inflater.inflate(R.layout.view_recipe_detail_page01, null);

            //Declaració dels elements del View
            ImageView imageView = (ImageView)item.findViewById(R.id.recipeImage);
            TextView titleText = (TextView)item.findViewById(R.id.recipeTitle);
            TextView descriptionText = (TextView)item.findViewById(R.id.descriptionText);
            Button categoryButton = (Button)item.findViewById(R.id.categoryButton);
            ImageButton recipeEditButton = (ImageButton)item.findViewById(R.id.recipeEditButton);
            ImageButton shareButton = (ImageButton)item.findViewById(R.id.shareButton);
            ImageButton sendToListButton = (ImageButton)item.findViewById(R.id.sendToListButton);

            //Valors dels elements de l'array
            String imageRecipe = recipesArrayList.get(position).getImage();
            String titleRecipe = recipesArrayList.get(position).getTitle();
            String descriptionRecipe = recipesArrayList.get(position).getDescription();
            final int idCategory = recipesArrayList.get(position).getCategoryID();
            final String cateName = recipesArrayList.get(position).getCategory();

            //Si es el primer element del array, estableix el títol del ToolBar
            if(position == 0) {
                //Canvia el títol del ToolBar
                setToolBarTitle(titleRecipe);
            }

            //Omple els elements del View
            if(imageRecipe.length() > 10) Picasso.with(RecipeDetailActivity.this).load("http://1list2cook.com/uploads/recipes/" + imageRecipe).into(imageView);
            titleText.setText(titleRecipe);
            descriptionText.setText(descriptionRecipe);
            categoryButton.setText(cateName);

            //Event onClick que recarrega el Activity passant com a paràmetre el ID de la categoria
            categoryButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    changeActivity(RecipesListActivity.class,"idCategory",String.valueOf(idCategory));
                }
            });

            //Víncula el botó d'edició de la recepta
            recipeEditButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    changeActivity(RecipeAddActivity.class,"idRecipe",recipeCode);
                }
            });

            //Envent obra la finestra per compartir contingut
            shareButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    shareRecipe();
                }
            });

            //Envent que obra el Dialog amb les opcions per enviar els ingredients a una llista
            sendToListButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    sentToList();
                }
            });

            return(item);
        }
    }

    //Constructor de la classe per l'adaptador de la pàgina 2
    class RecipesAdapterPage02 extends ArrayAdapter<Ingredients> {
        AppCompatActivity appCompatActivity;

        RecipesAdapterPage02(AppCompatActivity context) {
            super(context, R.layout.view_recipe_detail_page02, ingredientsArrayList);
            appCompatActivity = context;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = appCompatActivity.getLayoutInflater();
            View item = inflater.inflate(R.layout.view_recipe_detail_page02, null);

            //Declaració dels elements del View
            TextView nameText = (TextView)item.findViewById(R.id.ingredientName);
            TextView quantityText = (TextView)item.findViewById(R.id.ingredientQuantity);

            //Valors dels elements de l'array
            String nameIngredient = ingredientsArrayList.get(position).getName();
            String quantityIngredient = ingredientsArrayList.get(position).getQuantity();

            //Omple els elements del View
            nameText.setText(nameIngredient);
            quantityText.setText(quantityIngredient);

            return(item);
        }
    }

    //Constructor de la classe per l'adaptador de la pàgina 3
    class RecipesAdapterPage03 extends ArrayAdapter<Steps> {
        AppCompatActivity appCompatActivity;

        RecipesAdapterPage03(AppCompatActivity context) {
            super(context, R.layout.view_recipe_detail_page03, stepsArrayList);
            appCompatActivity = context;
        }

        public View getView(int position, View convertView, ViewGroup parent) {
            LayoutInflater inflater = appCompatActivity.getLayoutInflater();
            View item = inflater.inflate(R.layout.view_recipe_detail_page03, null);

            //Declaració dels elements del View
            TextView contText = (TextView)item.findViewById(R.id.stepCont);
            TextView stepText = (TextView)item.findViewById(R.id.stepText);

            //Valors dels elements de l'array
            int contStep = position + 1;
            String textStep = stepsArrayList.get(position).getName();

            //Omple els elements del View
            contText.setText(String.valueOf(contStep));
            stepText.setText(textStep);

            return(item);
        }
    }


    //Mostra la finestra per compartir contingut
    private void shareRecipe(){
        Intent sendIntent = new Intent();

        String text = recipesArrayList.get(0).getTitle().toString()+ "\n\n";
        text += "Ingredients: \n";
        for(int i = 0;i < ingredientsArrayList.size();i++) {
            text += ingredientsArrayList.get(i).getName() + ": " + ingredientsArrayList.get(i).getQuantity() + "\n";
        }
        text += "\nPassos: \n";
        for(int i = 0;i < stepsArrayList.size();i++) {
            text += "Pas " + (i+1) + ": " + stepsArrayList.get(i).getName() + "\n";
        }
        sendIntent.setAction(Intent.ACTION_SEND);
        sendIntent.putExtra(Intent.EXTRA_TEXT, text);
        sendIntent.setType("text/plain");
        startActivity(sendIntent);
    }


    //Mostra la finestra per enviar ingredients a llista
    private void sentToList(){
        //Recupera les llistes per el Spinner
        getLists();
    }

    //Recupera les llistes creades
    private void getLists() {
        //Recupera la informació necessaria de l'usuari
        SharedPreferences prefs = getSharedPreferences("UserInfo", Context.MODE_PRIVATE);
        Users userInfo = new Users(prefs);
        String userCode = userInfo.getUserCode();

        //Parametres per passar al WebService
        RequestParams params = new RequestParams();
        params.put("userCode", userCode);

        //Inicialitza l'array necessari
        listsArrayList = new ArrayList<Lists>();

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

        //Creació de la connexió amb el WebService
        AsyncHttpClient client = new AsyncHttpClient();
        client.get("http://1list2cook.com/webservices/lists_list.php", params, new JsonHttpResponseHandler() {
            @Override
            public void onStart() {
                progressDialog.setMessage("Recuperant llistes...");
                progressDialog.show();
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                progressDialog.dismiss();
                try {
                    JSONObject jsonArray = new JSONObject(response.toString());

                    String successCode = jsonArray.get("success").toString();

                    if (successCode.equalsIgnoreCase("1")) {
                        JSONArray userInfo = new JSONArray(jsonArray.get("message").toString());

                        //Guardar info per generar un nou objecte
                        for (int i = 0; i < userInfo.length(); i++) {
                            String listIden = userInfo.getJSONObject(i).get("listIden").toString();
                            String listTitl = userInfo.getJSONObject(i).get("listTitle").toString();

                            //Crea el nou objecte amb la informació de la llista
                            Lists listInfo = new Lists(listIden, listTitl);

                            //Introdueix la recepta a l'array
                            listToArray(listInfo);
                        }
                    }

                    //Si el codi retornat és diferent a 0 (error), mostra el Dialog
                    if (!successCode.equalsIgnoreCase("0")) {
                        //Genera el dialog
                        sentToListDialog();
                    } 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.");
            }
        });
    }

    //Afegeix una llista a l'array de llistes
    private void listToArray(Lists list) {
        listsArrayList.add(list);
    }

    //Mostra la finestra per enviar ingredients a llista
    private void sentToListDialog(){
        final Dialog dialog=new Dialog(RecipeDetailActivity.this);
        dialog.setContentView(R.layout.dialog_ingredients_send);
        TextView txtMessage=(TextView)dialog.findViewById(R.id.titleDialog);
        txtMessage.setText("Enviar a llista");

        //Declaració dels elements del dialog
        Button bt = (Button)dialog.findViewById(R.id.submitDialog);
        final EditText newListText = (EditText)dialog.findViewById(R.id.newListText);
        final Spinner listSpinner = (Spinner)dialog.findViewById(R.id.listSpinner);
        final RadioButton newListRadio = (RadioButton)dialog.findViewById(R.id.newListRadio);
        final RadioButton listRadio = (RadioButton)dialog.findViewById(R.id.listRadio);

        //Recupera les llistes per el Spinner
        if(listsArrayList.size() > 0) {
            String[] options = new String[listsArrayList.size()];
            for(int i = 0; i < listsArrayList.size();i++) {
                options[i] = listsArrayList.get(i).getName();
            }
            ArrayAdapter <String>adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, options);
            listSpinner.setAdapter(adapter);
        } else {
            listSpinner.setVisibility(View.GONE);
            listRadio.setVisibility(View.GONE);
        }

        //Assignació del event clic al botó
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String listName;
                String listCode;

                if(newListRadio.isChecked() && newListText.getText().toString().isEmpty()) {
                    showMessage("Tens que especificar un nom per la nova llista.");
                } else {
                    if (newListRadio.isChecked()) {
                        listName = newListText.getText().toString();
                        listCode = String.valueOf("0");
                    } else {
                        int listPosi = listSpinner.getSelectedItemPosition();
                        listName = String.valueOf(listsArrayList.get(listPosi).getName());
                        listCode = String.valueOf(listsArrayList.get(listPosi).getCode());
                    }
                    sentIngredientsToList(listName,listCode);
                    dialog.dismiss();
                }
            }
        });
        dialog.show();
    }


    //Funció que guarda la informació de la llista
    private void sentIngredientsToList(String listName,String listCode) {
        //Parametres per passar al WebService
        RequestParams params = new RequestParams();

        //Recupera i passa com a paràmetre el codi de l'usuari
        SharedPreferences prefs = getSharedPreferences("UserInfo", Context.MODE_PRIVATE);
        Users userInfo = new Users(prefs);
        params.put("userCode", userInfo.getUserCode());
        params.put("reciCode", recipeCode);
        params.put("listName", listName);
        params.put("listCode", listCode);

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

        //Creació de la connexió amb el WebService
        AsyncHttpClient client = new AsyncHttpClient();
        client.get("http://1list2cook.com/webservices/send_ingredients_list.php", params, new JsonHttpResponseHandler() {
            @Override
            public void onStart() {
                progressDialog.setMessage("Enviant els ingredients a la llista...");
                progressDialog.show();
            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                progressDialog.dismiss();
                try {
                    JSONObject jsonArray = new JSONObject(response.toString());
                    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." + statusCode);
            }
        });
    }
}
