package com.example.wadi;

import static android.app.PendingIntent.getActivity;

import android.annotation.SuppressLint;
import android.app.ActionBar;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.Toast;

import androidx.appcompat.app.AppCompatActivity;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.Volley;

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

import com.example.wadi.databinding.ActivityMainBinding;

import java.util.ArrayList;
import java.util.List;

public class MainActivity2 extends AppCompatActivity {

    ActivityMainBinding binding;
    ListView listView;

    private SearchView searchView;

    ArrayList<SItem> itemList;
    SItemAdapter adapter;

    private List<SItem> filteredList = new ArrayList<>();
    String URL = AppConfig.URL_Fetch_services;

    @SuppressLint("MissingInflatedId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityMainBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        setContentView(R.layout.activity_main2);

        searchView = findViewById(R.id.searchview);
        searchView.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
        searchView.setTextDirection(View.TEXT_DIRECTION_ANY_RTL);


        listView = findViewById(R.id.listView);
        itemList = new ArrayList<>();
        adapter = new SItemAdapter(this, itemList);
        listView.setAdapter(adapter);

        fetchData();

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) { return false; }

            @Override
            public boolean onQueryTextChange(String newText) {
                filteredList.clear();
                for (SItem item : itemList) {
                    if (item.getTitle().toLowerCase().contains(newText.toLowerCase())) {
                        filteredList.add(item);
                    }
                }
                adapter = new SItemAdapter(MainActivity2.this, filteredList);
                listView.setAdapter(adapter);
                return false;
            }
        });

        listView.setOnItemClickListener((parent, view1, position, id) -> {
            SItem selectedItem = itemList.get(position);
            Intent intent = new Intent(MainActivity2.this, Services_Detils.class);
            intent.putExtra("Services", selectedItem.getUid());
            startActivity(intent);
        });

    }

    private void fetchData() {
        RequestQueue queue = Volley.newRequestQueue(this);

        JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, URL, null,
                response -> {
                    for (int i = 0; i < response.length(); i++) {
                        try {
                            JSONObject obj = response.getJSONObject(i);
                            String title = obj.getString("name");
                            String imageUrl = obj.getString("url_image");
                            String rate = obj.getString("job");
                            String price = obj.getString("location");
                            String shortdesc = obj.getString("phone");
                            String uid = obj.getString("unique_id");
                            itemList.add(new SItem(title, imageUrl,rate,price,shortdesc,uid));
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                    adapter.notifyDataSetChanged();
                },
                error -> Toast.makeText(getApplicationContext(), "حدث خطا اثناء احضار البيانات", Toast.LENGTH_SHORT).show()
        );

        queue.add(jsonArrayRequest);
    }
}