<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Leaderboard;
use App\Models\Kelas;
use Carbon\Carbon;
use Illuminate\Http\Request;

class LeaderboardController extends Controller
{
    public function index(Request $request)
    {
        $now         = Carbon::now();
        $semester    = $request->input('semester', $now->month >= 7 ? '1' : '2');
        $tahunAjaran = $request->input('tahun_ajaran', $now->month >= 7
            ? $now->year . '/' . ($now->year + 1)
            : ($now->year - 1) . '/' . $now->year);
        $idKelas     = $request->input('id_kelas');

        $kelasList = Kelas::orderBy('tingkat')->orderBy('nama_kelas')->get();

        $query = Leaderboard::with(['siswa', 'kelas'])
            ->where('semester', $semester)
            ->where('tahun_ajaran', $tahunAjaran);

        if ($idKelas) {
            $query->where('id_kelas', $idKelas);
        }

        $leaderboard = $query->orderBy('total_exp', 'desc')->get()
            ->map(function ($item, $i) {
                return [
                    'ranking'    => $i + 1,
                    'nama'       => optional($item->siswa)->nama ?? '-',
                    'nisn'       => optional($item->siswa)->nisn ?? '-',
                    'nama_kelas' => optional($item->kelas)->nama_kelas ?? '-',
                    'exp'        => $item->total_exp,
                ];
            });

        // Tahun ajaran list untuk dropdown (5 tahun ke belakang)
        $tahunList = [];
        for ($y = $now->year; $y >= $now->year - 4; $y--) {
            $tahunList[] = $y . '/' . ($y + 1);
        }

        return view('admin.leaderboard.index', compact(
            'leaderboard', 'kelasList', 'semester', 'tahunAjaran', 'idKelas', 'tahunList'
        ));
    }
}