package com.example.saadcommunication.docfind;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.Environment;
import android.provider.ContactsContract;
import android.provider.MediaStore;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.CardView;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Base64;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;

public class Recieve_Payment extends AppCompatActivity  {
   public static  Uri selectedImageUri;
    EditText tx;
    TextView tv;
    Button Addcheque;
    int val = 0;
    int i = 0;
    String cclient_id;
    String Xcity;
    String Xclientid;
    String Xclientname;
    private Api apiInterface;
    Spinner city_spinner;
    Spinner client_spinner;
    String total_balance;
    String selectedId;
    String selected_Client_Name;
    String[] citiesId;
    String[] clientsId;
    String[] clients;
    String[] client_balance;
    Context mContext = this;
    List<City> CityList;
    String[] cities;
    List<Client> Clients;
    private ArrayAdapter<String> adapter;
    private ArrayAdapter<String> client_adapter;
    private List<Client> clientsList = new ArrayList<>();
    public ArrayList<Cheque_Payment> cheques_payments_list;
   private static final int IMG_REQUEST = 2;
   private static final int PICK_IMAGE = 1;
    Button saver;
    ScrollView your_scrollview;
    TextView textInfo;
    public ImageView subImageView;
    private static final int SELECTED_PICTURE = 1;
    private static final String TAG = "Recieve Activity" ;
Context con;

    Uri outputFileUri;

    String selectedImagePath = "";




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recieve__payment);
        Addcheque = findViewById(R.id.addcheque);
        saver = findViewById(R.id.save_cheque);
        your_scrollview = findViewById(R.id.your_scrollview);
        city_spinner = (Spinner) findViewById(R.id.citydropper);
        client_spinner = (Spinner) findViewById(R.id.clientdropper);
        textInfo = (TextView) findViewById(R.id.textinfo);





        tx = (EditText) findViewById(R.id.chequequantity);

        fetch_information();
        city_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                String selectedName = parent.getItemAtPosition(position).toString();
//                     String selectedId = citiesId[position].toString();

                if (selectedName != "Select Country") {
                    selectedId = citiesId[position].toString();
                    fetch_information(selectedId);
                    // Toast.makeText(mContext, "Choose City " + ""+ x, Toast.LENGTH_SHORT).show();
                    Toast.makeText(mContext, " City Selected  " + citiesId[position], Toast.LENGTH_SHORT).show();
                    //fetch_information(selectedId);


                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });
        client_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                selected_Client_Name = parent.getItemAtPosition(position).toString();



                cclient_id = clientsId[position].toString();
                total_balance = client_balance[position].toString();

                Toast.makeText(mContext, " cash : " + total_balance, Toast.LENGTH_SHORT).show();


            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });



        saver.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Xcity = selectedId;
                Xclientname = selected_Client_Name;
                Xclientid = cclient_id;




            }


        });






        Addcheque.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                val = Integer.parseInt(tx.getText().toString());

                // this button opens dialog box

                openDialog();
            }
        });


    }
    void openImageChooser() {
        Intent intent = new Intent();
        intent.setType("image/*");
        intent.setAction(Intent.ACTION_GET_CONTENT);
        startActivityForResult(Intent.createChooser(intent, "Select Picture"), SELECTED_PICTURE);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (resultCode == RESULT_OK) {
            if (requestCode == SELECTED_PICTURE) {
                // Get the url from data
                Uri selectedImageUri = data.getData();
                if (null != selectedImageUri) {
                    // Get the path from the Uri
                    String path = getPathFromURI(selectedImageUri);
                    Log.i(TAG, "Image Path : " + path);
                    // Set the image in ImageView
                    ((ImageView) findViewById(R.id.plimage)).setImageURI(selectedImageUri);

                }
            }
        }
    }

    public String getPathFromURI(Uri contentUri) {
        String res = null;
        String[] proj = {MediaStore.Images.Media.DATA};
        Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
        if (cursor.moveToFirst()) {
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            res = cursor.getString(column_index);
        }
        cursor.close();
        return res;
    }




    private final void mover() {
        your_scrollview.post(new Runnable() {
            @Override
            public void run() {
                your_scrollview.scrollTo(0, 345);
            }
        });
    }

    private final void focusOnView() {
        your_scrollview.post(new Runnable() {
            @Override
            public void run() {
                //   your_scrollview.scrollTo(0, layout.getBottom());
                // your_scrollview.scrollTo(0,0);
            }
        });
    }

    public void fetch_information() {
        apiInterface = ApiClient.getApiClient().create(Api.class);

        Call<List<City>> call = apiInterface.GetCities();


        call.enqueue(new Callback<List<City>>() {
            @Override
            public void onResponse(Call<List<City>> call, Response<List<City>> response) {

                CityList = response.body();
                City myCustomObject = new City();
                myCustomObject.setCityName("Select Country");
                CityList.add(myCustomObject);



                cities = new String[CityList.size()];
                citiesId = new String[CityList.size()];
                for (int i = 0; i < CityList.size(); i++) {
                    cities[i] = CityList.get(i).getCityName();
                    citiesId[i] = CityList.get(i).getCityId();


                }

                adapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1, cities);
                adapter.setDropDownViewResource(R.layout.spinner_dropdown_layout);
                city_spinner.setAdapter(adapter);
                city_spinner.setSelection(cities.length - 1);
            }

            @Override
            public void onFailure(Call<List<City>> call, Throwable t) {
                Toast.makeText(getApplicationContext(), t.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });

    }

    public void fetch_information(String CityId) {
        apiInterface = ApiClient.getApiClient().create(Api.class);
        Call<List<Client>> call = apiInterface.GetClients(CityId);

        call.enqueue(new Callback<List<Client>>() {
            @Override
            public void onResponse(Call<List<Client>> call, Response<List<Client>> response) {
                Clients = response.body();

                prepareClientsData();
            }

            @Override
            public void onFailure(Call<List<Client>> call, Throwable t) {

            }
        });
    }

    public void prepareClientsData() {
        clients = new String[Clients.size()];
        clientsId = new String[Clients.size()];
        client_balance = new String[Clients.size()];
        for (int i = 0; i < Clients.size(); i++) {
             clients[i] = Clients.get(i).getClientName();
            clientsId[i] = Clients.get(i).getClientId();
            client_balance[i] = Clients.get(i).getTotalBalance();

        }
        client_adapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1, clients);
        adapter.setDropDownViewResource(R.layout.spinner_dropdown_layout);
        client_spinner.setAdapter(client_adapter);


    }




    private void openDialog(){
        LayoutInflater inflater = LayoutInflater.from(Recieve_Payment.this);
        View subView = inflater.inflate(R.layout.dialogz, null);
        final EditText subEdit_Ch_Amount = (EditText)subView.findViewById(R.id.dialogEditText);
        final EditText subEdit_Ch_No = (EditText)subView.findViewById(R.id.dialogEditText2);
        final EditText subEdit_Ch_Date=(EditText)subView.findViewById(R.id.dialogEditText3);
        subImageView = (ImageView)subView.findViewById(R.id.plimage);

       // Drawable drawable = getResources().getDrawable(R.mipmap.ic_launcher);
       // subImageView.setImageDrawable(drawable);


        //getDialogImageView(UserImage);
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Add Cheque "+ i);
        builder.setMessage("AlertDialog Message");
        builder.setView(subView);
        AlertDialog alertDialog = builder.create();

        View view= inflater.inflate(R.layout.dialogz, null);
        view.findViewById(R.id.plimage).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
              //  selectimage();
               // subImageView.setImageBitmap(bitmap);
                Intent chooseImageFromGallery = new Intent();
                chooseImageFromGallery.setType("image/*");
                chooseImageFromGallery.setAction(Intent.ACTION_GET_CONTENT);
                try {
                   // chooseImageFromGallery.putExtra("return-data", true);
                   // startActivityForResult(chooseImageFromGallery, PICK_IMAGE);
                    startActivityForResult(Intent.createChooser(chooseImageFromGallery, "Select Picture"),SELECTED_PICTURE);
                } catch (ActivityNotFoundException e) {

                }

            }
        });
        builder.setView(view);
       // subImageView = (ImageView)findViewById(R.id.plimage);
       // subImageView.setImageURI(selectedImageUri);
        ((ImageView) findViewById(R.id.plimage)).setImageURI(selectedImageUri);
       // subImageView.setImageBitmap(bitmap);
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                textInfo.setText(subEdit_Ch_Amount.getText().toString());
                   Cheque_Payment addchequer = new Cheque_Payment();
                   addchequer.setChequeAmount(subEdit_Ch_Amount.getText().toString());
                   addchequer.setChequeNumber(subEdit_Ch_No.getText().toString());
                   addchequer.setChequeDate(subEdit_Ch_Date.getText().toString());



            }
        });

        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(Recieve_Payment.this, "Cancel", Toast.LENGTH_LONG).show();
            }
        });

        builder.show();
    }


}
