using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class Test : MonoBehaviour
{
    [Header("Daftar Pertanyaan")]
    public List<Questions> daftarPertanyaan;

    [Header("UI Komponen")]
    public List<TextMeshProUGUI> textPertanyaanList;
    public List<QuestionToggle> toggleJawabanList;

    public GameObject questionBox;
    public GameObject questionBox2;
    public GameObject questionBox3;

    public GameObject movementBlock;

    public ToggleGroup toggleGroup;

    public List<int> collectedJawaban = new List<int>();

    private List<Questions> pertanyaanTeracak;  

    private void Awake()
    {
        
    }

    // Start is called before the first frame update
    void Start()
    {
        // Acak pertanyaan saja
        pertanyaanTeracak = daftarPertanyaan.OrderBy(q => Random.value).ToList();

        // Tampilkan pertanyaan dan jawaban
        for (int i = 0; i < textPertanyaanList.Count && i < pertanyaanTeracak.Count; i++)
        {
            var pertanyaan = pertanyaanTeracak[i];

            // Set teks pertanyaan
            textPertanyaanList[i].text = pertanyaan.pertanyaan;

            var jawaban = pertanyaan.jawaban;

            // Set teks jawaban ke Toggle
            var toggleGroup = toggleJawabanList[i].toggles;
            for (int j = 0; j < toggleGroup.Count && j < jawaban.Count; j++)
            {
                toggleGroup[j].GetComponentInChildren<TextMeshProUGUI>().text = jawaban[j];
            }
        }
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    public void QuestionsBox()
    {
        questionBox.SetActive(true);
    }

    public void SubmitButton()
    {
        Toggle toggle = toggleGroup.ActiveToggles().FirstOrDefault();

        // periksa apakah sudah menjawab salah satu pilihan
        if (toggle != null)
        {
            string jawabanUser = toggle.GetComponentInChildren<TextMeshProUGUI>().text;

            // Cari pertanyaan aktif berdasarkan text pertanyaan
            string teksPertanyaanAktif = textPertanyaanList[0].text;
            Questions pertanyaanAktif = pertanyaanTeracak
                .FirstOrDefault(q => q.pertanyaan == teksPertanyaanAktif);

            if (pertanyaanAktif != null)
            {
                // Contoh perbandingan jawaban
                if (jawabanUser == pertanyaanAktif.jawabanBenar)
                {
                    collectedJawaban.Add(1);
                }
                else
                {
                    collectedJawaban.Add(2);
                }
            }
            else
            {
                Debug.LogWarning("Pertanyaan aktif tidak ditemukan!");
            }
            movementBlock.SetActive(false);
            questionBox.SetActive(false);
        }
    }

    public void ShowQuestion(int index)
    {
        if (index < pertanyaanTeracak.Count)
        {
            movementBlock.SetActive(true);
            var pertanyaan = pertanyaanTeracak[index];
            questionBox.SetActive(true);

            // Set text pertanyaan
            textPertanyaanList[0].text = pertanyaan.pertanyaan;

            // Set jawaban ke Toggle
            var jawaban = pertanyaan.jawaban;
            var toggleGroup = toggleJawabanList[0].toggles;

            // periksa apakah ada toggle yg aktif
            foreach (var toggle in toggleGroup)
            {
                toggle.isOn = false;
            }

            // menampilkan jawaban
            for (int j = 0; j < toggleGroup.Count && j < jawaban.Count; j++)
            {
                toggleGroup[j].GetComponentInChildren<TextMeshProUGUI>().text = jawaban[j];
            }
        }
    }
}
