package com.example.acer.agendita_mysql_c;

import android.app.ProgressDialog;
import android.content.ContentValues;
import android.database.sqlite.SQLiteDatabase;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

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

import java.io.IOException;
import java.util.ArrayList;

import librerias.ConexionWeb;
import librerias.MiBaseDatos;
import librerias.Parametros;


public class AltasFragment extends Fragment implements View.OnClickListener {
    Button btnCancelar, btnGrabar;
    EditText txtNombre, txtApellidos, txtTelefono;
    MiBaseDatos baseDatos;
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_altas, container, false);
    }
    public void onStart(){
        super.onStart();
        btnCancelar=(Button)getView().findViewById(R.id.btnCancelarAltas);
        btnGrabar=(Button)getView().findViewById(R.id.btnGrabarAltas);
        txtNombre=(EditText) getView().findViewById(R.id.txtNombre);
        txtApellidos=(EditText) getView().findViewById(R.id.txtApellido);
        txtTelefono=(EditText) getView().findViewById(R.id.txtTelefono);
        btnCancelar.setOnClickListener(this);
        btnGrabar.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        if(v.getId()==R.id.btnCancelarAltas){
            cancelar();
        }else if(v.getId()==R.id.btnGrabarAltas){

            if(Parametros.conexion.equals("Local")){
               new TareaGrabarLocal().execute();
            }else if(Parametros.conexion.equals("Remoto")){
                grabarWeb();
            }
        }
    }
    public void cancelar(){
        txtTelefono.setText("");
        txtNombre.setText("");
        txtApellidos.setText("");
    }
    public void grabarLocal(){
        String nombre=txtNombre.getText().toString();
        String apellido=txtApellidos.getText().toString();
        String telefono=txtTelefono.getText().toString();
        if(nombre.equals("")||apellido.equals("")||telefono.equals("")){
            Toast.makeText(getContext(), "Favor de LLenar todos los Datos", Toast.LENGTH_SHORT).show();
        }else{
            baseDatos=new MiBaseDatos(getContext());
            SQLiteDatabase sql=baseDatos.getWritableDatabase();
            ContentValues contenido=new ContentValues();
            //contenido.put("idDatos","null");
            contenido.put(Parametros.campo_nombre,nombre);
            contenido.put(Parametros.campo_apellido,apellido);
            contenido.put(Parametros.campo_telefono,telefono);
            sql.insertWithOnConflict(Parametros.tabla_datos,null,contenido,SQLiteDatabase.CONFLICT_IGNORE);
            sql.close();
            cancelar();
        }
    }
    public void grabarWeb(){
        ArrayList<String> valores=new ArrayList();
        String nombre=txtNombre.getText().toString();
        String apellido=txtApellidos.getText().toString();
        String telefono=txtTelefono.getText().toString();

        if(nombre.equals("")||apellido.equals("")||telefono.equals("")){
            Toast.makeText(getContext(), "Favor de Llenar todos los Campos", Toast.LENGTH_SHORT).show();
        }else {
            valores.add(0, nombre);
            valores.add(1, apellido);
            valores.add(2, telefono);

            new TareaGrabarWeb(valores).execute();
        }

    }

    private class TareaGrabarLocal extends AsyncTask<Void, Void, String> {
        private ProgressDialog nDialog;
        String boton;
        public TareaGrabarLocal(){
            nDialog = new ProgressDialog(getActivity()); //Here I get an error: The constructor ProgressDialog(PFragment) is undefined

        }
        @Override
        protected String doInBackground(Void... voids) {
            try {
                Thread.sleep(3000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }

        protected void onPreExecute() {
            nDialog.show();
            nDialog.setContentView(R.layout.dialogo_grabando);
        }

        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            if (nDialog.isShowing()) {
                nDialog.dismiss();
                grabarLocal();
                cancelar();
            }
        }
    }
    private class TareaGrabarWeb extends AsyncTask<Void, Void, String> {
        String URL = "http://"+Parametros.servidor+"/EjemploMysql/Altas.php";
       // private JSONArray jsonDatos = null;
        ArrayList<String> valores;

        private ProgressDialog nDialog;
        public TareaGrabarWeb(ArrayList<String> valores){
            nDialog = new ProgressDialog(getActivity());
            this.valores=valores;
        }
        @Override
        //accion principal
        protected String doInBackground(Void... voids) {

                ArrayList<String> keys = new ArrayList();
                ArrayList<String> valor = new ArrayList();
                keys.add(0, "nombre");valor.add(0, valores.get(0));
                keys.add(1, "apellido");valor.add(1, valores.get(1));
                keys.add(2, "telefono");valor.add(2, valores.get(2));
                ConexionWeb conexionWeb = new ConexionWeb();
                conexionWeb.grabarDatos(URL, conexionWeb.armarGET(keys, valor));
            try {
                //duracion de la ventana 3000 milisegundos
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }
        //accion previa
        protected void onPreExecute() {
            nDialog.show();
            nDialog.setContentView(R.layout.dialogo_grabando);


        }
        //accion posterior
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            if (nDialog.isShowing()) {
                nDialog.dismiss();
                cancelar();
            }
        }

    }

}
