package com.cscodetech.moverslorry.ui;

import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import androidx.recyclerview.widget.DefaultItemAnimator;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.cscodetech.moverslorry.R;
import com.cscodetech.moverslorry.databinding.ActivityFaqBinding;
import com.cscodetech.moverslorry.model.Faq;
import com.cscodetech.moverslorry.model.FaqDataItem;
import com.cscodetech.moverslorry.model.UserLogin;
import com.cscodetech.moverslorry.retrofit.APIClient;
import com.cscodetech.moverslorry.retrofit.GetResult;
import com.cscodetech.moverslorry.utils.CustPrograssbar;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

import org.json.JSONObject;

import java.util.List;

import okhttp3.MediaType;
import okhttp3.RequestBody;
import retrofit2.Call;

public class FaqActivity extends BaseActivity implements GetResult.MyListener {

    private ActivityFaqBinding binding;
    CustPrograssbar custPrograssbar;
    UserLogin user;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        binding = ActivityFaqBinding.inflate(getLayoutInflater());
        setContentView(binding.getRoot());
        
        user = sessionmanager.getUserDetails();
        custPrograssbar = new CustPrograssbar();

        LinearLayoutManager mLayoutManager2 = new LinearLayoutManager(this);
        mLayoutManager2.setOrientation(LinearLayoutManager.VERTICAL);
        binding.recyclerProduct.setLayoutManager(mLayoutManager2);
        binding.recyclerProduct.setItemAnimator(new DefaultItemAnimator());
        
        binding.imgBack.setOnClickListener(v -> finish());
        
        getFaq();
    }
    
    private void getFaq() {
        custPrograssbar.prograssCreate(this);
        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put("uid", user.getId());
        } catch (Exception e) {
            e.printStackTrace();
        }
        RequestBody bodyRequest = RequestBody.create(jsonObject.toString(),MediaType.parse("application/json"));
        Call<JsonObject> call = APIClient.getInterface().getFaq(bodyRequest);
        GetResult getResult = new GetResult(this);
        getResult.setMyListener(this);
        getResult.callForLogin(call, "1");
    }

    @Override
    public void callback(JsonObject result, String callNo) {
        try {
            custPrograssbar.closePrograssBar();
            if(callNo.equalsIgnoreCase("1")){
                Gson gson = new Gson();
                Faq faq = gson.fromJson(result.toString(),Faq.class);
                if(faq.getResult().equalsIgnoreCase("true")){
                    binding.recyclerProduct.setAdapter(new MyFaqAdepter(faq.getFaqData()));
                }
            }
        } catch (Exception e) {
            Log.e("Error", "--> " + e.getMessage());
        }
    }

    public class MyFaqAdepter extends RecyclerView.Adapter<MyFaqAdepter.ViewHolder> {
        private List<FaqDataItem> orderData;

        public MyFaqAdepter(List<FaqDataItem> orderData) {
            this.orderData = orderData;
        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View itemView = LayoutInflater.from(parent.getContext())
                    .inflate(R.layout.faq_item, parent, false);
            return new ViewHolder(itemView);
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            FaqDataItem faqDataItem = orderData.get(position);
            holder.txtTital.setText("" + faqDataItem.getQuestion());
            holder.txtAns.setText("" + faqDataItem.getAnswer());
            
            holder.lvlClick.setOnClickListener(v -> {
                if (holder.lvlItem.getVisibility() == View.VISIBLE) {
                    holder.lvlItem.setVisibility(View.GONE);
                    holder.imgRight.setImageResource(R.drawable.ic_faq_right);
                } else {
                    holder.lvlItem.setVisibility(View.VISIBLE);
                    holder.imgRight.setImageResource(R.drawable.ic_faq_down);
                }
            });
        }

        @Override
        public int getItemCount() {
            return orderData.size();
        }

        public class ViewHolder extends RecyclerView.ViewHolder {
            TextView txtTital;
            TextView txtAns;
            LinearLayout lvlItem;
            LinearLayout lvlClick;
            ImageView imgRight;

            public ViewHolder(View view) {
                super(view);
                txtTital = view.findViewById(R.id.txt_tital);
                txtAns = view.findViewById(R.id.txt_ans);
                lvlItem = view.findViewById(R.id.lvl_item);
                lvlClick = view.findViewById(R.id.lvl_click);
                imgRight = view.findViewById(R.id.img_right);
            }
        }
    }
}

