package com.sample.clientcontrollpractice;

import android.app.Activity;
import android.app.AlertDialog;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONObject;

public class ClientController {
    //************************************************************************************************************************


    /*

    MainActivity te nicher 2 line code Call korte hobe Controller jonno, but MainActivity er xml a je progressbar thakbe ota dite hobe
        progressBar = findViewById(R.id.progressBar);
        ClientController.checkClient(this, progressBar);

     */


    public static void checkClient(Activity activity, ProgressBar progressBar) {

        String url = "https://khulnagtech.fun/Client_Controll_APK/controll.php";

        progressBar.setVisibility(View.VISIBLE);

        JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
                response -> {
                    //======================================================================================

                    progressBar.setVisibility(View.GONE);

                    try {
                        String apiStatus = response.getString("status");

                        if (apiStatus.equals("success")) {

                            JSONArray dataArray = response.getJSONArray("data");

                            for (int i = 0; i < dataArray.length(); i++) {

                                JSONObject obj = dataArray.getJSONObject(i);

                                String clientName = obj.getString("client_name");
                                String status = obj.getString("status");
                                String des = obj.getString("des");

                                // 🔥 Your condition
                                if (clientName.equalsIgnoreCase("Rabbi")) {
                                    //---------
                                    if (status.equalsIgnoreCase("Pending")) {
                                        //***
                                        showBlockDialog(activity, des);
                                        return;
                                        //***
                                    }  // second conditin end here
                                    //---------
                                } else if (clientName.isEmpty() || clientName == null || clientName.equalsIgnoreCase("NULL")) {
                                    //***
                                    showBlockDialog(activity, des);
                                    return;
                                    //***
                                }  //  Condition end here

                                //======================================================================================

                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                },
                error -> {
                    progressBar.setVisibility(View.GONE);

                    if (!activity.isFinishing()) {
                        Toast.makeText(activity, "Server Error", Toast.LENGTH_SHORT).show();
                    }
                });

        RequestQueue queue = Volley.newRequestQueue(activity);
        queue.add(request);
    }


    //************************************************************************************************************************
    //************************************************************************************************************************

    // 🔒 Block Dialog
    private static void showBlockDialog(Activity activity, String message) {

        if (activity.isFinishing()) return;

        AlertDialog.Builder builder = new AlertDialog.Builder(activity);
        builder.setTitle("❌ App Disabled");
        builder.setMessage(message);
        builder.setCancelable(false);

        builder.setPositiveButton("Exit", (dialog, which) -> {
            activity.finishAffinity();
        });

        AlertDialog dialog = builder.create();
        dialog.show();
        dialog.setCanceledOnTouchOutside(false);
    }


    //************************************************************************************************************************
    //************************************************************************************************************************
}  //  end here