package com.example.kiran.carrents;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;

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

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;

public class Admindelete extends AppCompatActivity {
    ListView lv;
    String[] car;
    ProgressDialog progressDialog1,pdia;
    String[] ids;
    int i;
    String delcar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_admindelete);
        lv=(ListView)findViewById(R.id.listview1);
        new loadcars().execute();
        registerForContextMenu(lv);
    }



    class loadcars extends AsyncTask<Void,Void,String[]> {
        @Override
        protected void onPostExecute(String[] strings) {
            super.onPostExecute(strings);
            ArrayAdapter arrayAdapter = new ArrayAdapter(Admindelete.this,android.R.layout.simple_list_item_1,strings);
            lv.setAdapter(arrayAdapter);
            progressDialog1.dismiss();
        }


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressDialog1 = new ProgressDialog(Admindelete.this);
            progressDialog1.setMessage("loading cars...");
            progressDialog1.show();
        }

        @Override
        protected String[] doInBackground(Void... params) {
            String link = "https://carrentscom.000webhostapp.com/admindelete.php";
            try {
                URL url = new URL(link);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setConnectTimeout(1000000);
                conn.setReadTimeout(1500000);
                InputStream inputStream = conn.getInputStream();
                conn.connect();
                int response = conn.getResponseCode();
                inputStream = conn.getInputStream();
// Convert the InputStream into a string
                String contentAsString = convertInputToString(inputStream, 500);
                Log.d("connected",Integer.toString(response));
                Log.d("connected",contentAsString);
                Log.d("connected","connceted");
                ArrayList<String> arrayList = new ArrayList<String>();
                ArrayList<String> clist = new ArrayList<String>();
                ArrayList<String> ids1 = new ArrayList<>();
                if(contentAsString.charAt(0)=='{'){
                    JSONObject data = new JSONObject(contentAsString);
                    JSONArray menuItemArray = data.getJSONArray("items");
                    int len = menuItemArray.length();
                    for (int i = 0;i<len;i++) {
                        JSONObject item = menuItemArray.getJSONObject(i);
                        String id = item.getString("car_id");
                        String model = item.getString("car_model");
                        arrayList.add(id+"\t\t\t"+model);
                        clist.add(id+"\t\t\t"+model);
                        ids1.add(id);

                    }
                }
                String[] array = arrayList.toArray(new String[0]);
                car = clist.toArray(new String[0]);
                ids = ids1.toArray(new String[0]);
                return  array;
            } catch (Exception e) {
                Log.d("inbackground",e.getMessage());
                String[] str = {"error in loading"};
                return  str;
            }
        }
        public String convertInputToString(InputStream stream, int len)
                throws IOException, UnsupportedEncodingException {
            Reader reader = null;
            reader = new InputStreamReader(stream, "UTF-8");
            char[] buffer = new char[len];
            reader.read(buffer);
            Log.d("readpage",new String(buffer));
            return new String(buffer);
        }

    }


    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add("Delete");
    }

    @Override
    public boolean onContextItemSelected(MenuItem item) {
        super.onContextItemSelected(item);
        if(item.getTitle()=="Delete"){
            //Toast.makeText(this,"Hello ...",Toast.LENGTH_LONG).show();
            AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
            int index = info.position;
            delcar = ids[index];
            Toast.makeText(this,delcar,Toast.LENGTH_LONG).show();


            new deletecar().execute(delcar);

        }

        return true;
    }


    class deletecar extends AsyncTask<String,Void,Integer> {

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pdia = new ProgressDialog(Admindelete.this);
            pdia.setMessage("Deleting car ...");
            pdia.show();
        }

        @Override
        protected Integer doInBackground(String... params) {

            String uname = params[0];
            String link = new String();

            link = "https://carrentscom.000webhostapp.com/deletecar.php?car_id=" +uname;


            try {
                URL url = new URL(link);
                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                conn.setConnectTimeout(1000000);
                conn.setReadTimeout(1500000);
                InputStream inputStream = conn.getInputStream();
                conn.connect();
                int response = conn.getResponseCode();
                inputStream = conn.getInputStream();
                String contentAsString = convertInputToString(inputStream, 1);
                Log.d("connected", Integer.toString(response));
                Log.d("connected", "connceted");
                int i = Integer.parseInt(contentAsString);
                if (i == 1) {
                    return 1;
                }
                return 0;
            } catch (Exception e) {
                Log.d("indobackground", e.getMessage());
                return 0;
            }
        }

        @Override
        protected void onPostExecute(Integer integer) {
            super.onPostExecute(integer);
            i = integer;
            if (integer == 1) {
                Toast.makeText(Admindelete.this,"Deleted",Toast.LENGTH_LONG).show();
                Intent intent = new Intent(Admindelete.this, Adminconsole.class);
                startActivity(intent);
            }
            if (integer == 0) {
                Toast.makeText(Admindelete.this, "Unknown Error", Toast.LENGTH_SHORT).show();
            }
            pdia.dismiss();
        }

        public String convertInputToString(InputStream stream, int len)
                throws IOException, UnsupportedEncodingException {
            Reader reader = null;
            reader = new InputStreamReader(stream, "UTF-8");
            char[] buffer = new char[len];
            reader.read(buffer);
            Log.d("readpage", new String(buffer));
            return new String(buffer);
        }

    }


}