package com.kolobochki.memory.ui.dashboard;

import android.app.AlertDialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider;
import androidx.navigation.Navigation;

import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;

import com.kolobochki.memory.LevelRecord;
import com.kolobochki.memory.MainActivity;
import com.kolobochki.memory.databinding.FragmentDashboardBinding;

import com.kolobochki.memory.R;
import com.kolobochki.memory.AppDatabase;
import com.kolobochki.memory.GameRepository;
import com.kolobochki.memory.LevelRecordDao;

public class DashboardFragment extends Fragment {

    private FragmentDashboardBinding binding;
    private Executor executor = Executors.newSingleThreadExecutor();
    private LevelRecordDao levelRecordDao;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Инициализация базы данных
        AppDatabase db = MainActivity.getDatabase();
        levelRecordDao = db.levelRecordDao();
    }

    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        binding = FragmentDashboardBinding.inflate(inflater, container, false);
        View root = binding.getRoot();

        binding.chip.setOnClickListener(view -> {
            try {
                Navigation.findNavController(view).navigate(R.id.action_navigation_dashboard_to_navigation_info);
            } catch (Exception e) {
                //e.printStackTrace();
            }
        });

        binding.chip2.setOnClickListener(view -> {
            Navigation.findNavController(view).navigate(R.id.action_navigation_dashboard_to_navigation_records);
        });

        binding.chip4.setOnClickListener(view -> {
            showResetConfirmationDialog();
        });

        binding.chip3.setOnClickListener(view -> {
            new AlertDialog.Builder(requireContext())
                    .setTitle("Переход на другую платформу")
                    .setMessage("Скоро...")
                    .setPositiveButton("OK", null)
                    .show();
        });


        return root;
    }

    private void showResetConfirmationDialog() {
        new AlertDialog.Builder(requireContext())
                .setTitle("Сброс статистики")
                .setMessage("Вы уверены, что хотите сбросить все рекорды и статистику?")
                .setPositiveButton("Сбросить", (dialog, which) -> resetAllStats())
                .setNegativeButton("Отмена", null)
                .show();
    }

    private void resetAllStats() {
        executor.execute(() -> {
            // Удаляем все записи
            levelRecordDao.deleteAllRecords();

            // Создаем новые пустые записи для каждого уровня
            for (int i = 1; i <= 4; i++) {
                LevelRecord record = new LevelRecord(i, 0, 0);
                levelRecordDao.insert(record);
            }

            // Показываем уведомление в UI потоке
            requireActivity().runOnUiThread(() -> {
                Toast.makeText(requireContext(),
                        "Все данные сброшены", Toast.LENGTH_SHORT).show();
            });
        });
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        binding = null;
    }
}