<?php
session_start();
if (!isset($_SESSION['username']) || !in_array($_SESSION['role'], ['admin', 'guru'])) {
    header("Location: index.php");
    exit;
}

include 'config.php';

$kelas = $_GET['kelas'] ?? '';
$bulan = $_GET['bulan'] ?? date('m');
$tahun = $_GET['tahun'] ?? date('Y');

// Dapatkan tanggal hari ini untuk perbandingan
$hariIni = date('d');
$bulanIni = date('m');
$tahunIni = date('Y');

// Ambil nama sekolah
$profil = mysqli_fetch_assoc(mysqli_query($conn, "SELECT nama_sekolah, kepala_sekolah, nip_kepala FROM profil_sekolah LIMIT 1"));
$nama_sekolah = $profil['nama_sekolah'] ?? 'Nama Sekolah';

// Ambil daftar kelas - DIURUTKAN DARI YANG LEBIH KECIL
$kelasList = mysqli_query($conn, "SELECT DISTINCT kelas FROM siswa ORDER BY CAST(kelas AS UNSIGNED), kelas");

// Hitung jumlah hari dalam bulan
$jumlahHari = cal_days_in_month(CAL_GREGORIAN, $bulan, $tahun);

// Ambil data wali kelas
$wali_nama = '....................................';
$wali_nip = '........................';
if ($kelas != '') {
    $qWali = mysqli_query($conn, "SELECT nama_wali, nip_wali FROM wali_kelas WHERE kelas = '$kelas' LIMIT 1");
    if ($w = mysqli_fetch_assoc($qWali)) {
        $wali_nama = $w['nama_wali'];
        $wali_nip = $w['nip_wali'];
    }
}

// Ambil daftar siswa - DIURUTKAN BERDASARKAN KELAS (KECIL KE BESAR) DAN NAMA
$sqlSiswa = "SELECT id, nis, nisn, nama, kelas FROM siswa WHERE status='aktif'";
if ($kelas != '') {
    $sqlSiswa .= " AND kelas = '$kelas'";
}
$sqlSiswa .= " ORDER BY CAST(kelas AS UNSIGNED), kelas, nama";
$siswaResult = mysqli_query($conn, $sqlSiswa);

// Ambil data pelanggaran
$pelanggaran = [];
$pelanggaranQuery = "SELECT p.*, s.nis, s.nisn, s.nama, s.kelas 
                     FROM pelanggaran p 
                     JOIN siswa s ON p.siswa_id = s.id 
                     WHERE MONTH(p.tanggal) = '$bulan' 
                       AND YEAR(p.tanggal) = '$tahun'
                       AND s.status='aktif'";
if ($kelas != '') {
    $pelanggaranQuery .= " AND s.kelas = '$kelas'";
}
$pelanggaranQuery .= " ORDER BY p.tanggal DESC";
$resultPelanggaran = mysqli_query($conn, $pelanggaranQuery);

// Hitung rekap pelanggaran per siswa
$rekap = [];
$totalGlobal = [
    'total_pelanggaran' => 0,
    'total_poin' => 0,
    'pelanggaran_berat' => 0,
    'pelanggaran_sedang' => 0,
    'pelanggaran_ringan' => 0
];

while ($row = mysqli_fetch_assoc($resultPelanggaran)) {
    $sid = $row['siswa_id'];
    
    if (!isset($rekap[$sid])) {
        $rekap[$sid] = [
            'nis' => $row['nis'],
            'nisn' => $row['nisn'],
            'nama' => $row['nama'],
            'kelas' => $row['kelas'],
            'jumlah_pelanggaran' => 0,
            'total_poin' => 0,
            'pelanggaran_berat' => 0,
            'pelanggaran_sedang' => 0,
            'pelanggaran_ringan' => 0,
            'status_aktif' => 0,
            'status_selesai' => 0,
            'dialihkan' => 0
        ];
    }
    
    $rekap[$sid]['jumlah_pelanggaran']++;
    $rekap[$sid]['total_poin'] += $row['poin'];
    
    // Klasifikasi berdasarkan poin
    if ($row['poin'] >= 50) {
        $rekap[$sid]['pelanggaran_berat']++;
        $totalGlobal['pelanggaran_berat']++;
    } elseif ($row['poin'] >= 25) {
        $rekap[$sid]['pelanggaran_sedang']++;
        $totalGlobal['pelanggaran_sedang']++;
    } else {
        $rekap[$sid]['pelanggaran_ringan']++;
        $totalGlobal['pelanggaran_ringan']++;
    }
    
    // Status
    if ($row['status'] == 'Aktif') {
        $rekap[$sid]['status_aktif']++;
    } else {
        $rekap[$sid]['status_selesai']++;
    }
    
    // Alihkan
    if ($row['status_alihkan'] == 'ya') {
        $rekap[$sid]['dialihkan']++;
    }
    
    $totalGlobal['total_pelanggaran']++;
    $totalGlobal['total_poin'] += $row['poin'];
}

// Hitung statistik tambahan
$totalSiswaPelanggaran = count($rekap);
$rataRataPoin = $totalGlobal['total_pelanggaran'] > 0 ? round($totalGlobal['total_poin'] / $totalGlobal['total_pelanggaran'], 1) : 0;

// Tanggal terakhir bulan ini
$tanggal_terakhir = date("j F Y", strtotime("$tahun-$bulan-" . cal_days_in_month(CAL_GREGORIAN, $bulan, $tahun)));

// Ambil semua pelanggaran untuk ditampilkan di tabel detail
mysqli_data_seek($resultPelanggaran, 0);
$detailPelanggaran = [];
while ($row = mysqli_fetch_assoc($resultPelanggaran)) {
    $detailPelanggaran[] = $row;
}
?>
<!DOCTYPE html>
<html lang="id">
<head>
<meta charset="UTF-8">
<title>Rekap Pelanggaran Bulanan</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
    body { font-family: Arial, sans-serif; margin: 20px; }
    h2 { text-align: center; margin-bottom: 5px; }
    form { text-align: center; margin-bottom: 20px; }
    select, input, button { padding: 5px; margin: 3px; }
    table { border-collapse: collapse; width: 100%; font-size: 14px; margin-bottom: 20px; }
    th, td { border: 1px solid #ddd; padding: 6px; text-align: center; }
    th { background: #f4f4f4; }
    .summary { display: flex; justify-content: center; margin: 20px 0; gap: 20px; flex-wrap: wrap; }
    .box { padding: 10px 20px; border-radius: 8px; font-weight: bold; font-size: 16px; min-width: 120px; text-align: center; }
    .total { background: #e3f2fd; color: #1565c0; }
    .poin { background: #ffeb3b; color: #333; }
    .berat { background: #ffebee; color: #c62828; }
    .sedang { background: #fff8e1; color: #ef6c00; }
    .ringan { background: #dff0d8; color: #2e7d32; }
    .rata { background: #e0e0e0; color: #333; }
    .predikat { font-weight: bold; padding: 3px 6px; border-radius: 4px; display: inline-block; }
    .sangatbaik { background: #c8e6c9; color: #256029; }
    .baik { background: #bbdefb; color: #0d47a1; }
    .cukup { background: #fff9c4; color: #f57f17; }
    .kurang { background: #ffe0b2; color: #e65100; }
    .badge-berat { background: #ef4444; color: white; padding: 2px 6px; border-radius: 4px; }
    .badge-sedang { background: #f59e0b; color: white; padding: 2px 6px; border-radius: 4px; }
    .badge-ringan { background: #10b981; color: white; padding: 2px 6px; border-radius: 4px; }
    .badge-aktif { background: #ef4444; color: white; padding: 2px 6px; border-radius: 4px; }
    .badge-selesai { background: #10b981; color: white; padding: 2px 6px; border-radius: 4px; }
    .badge-dialihkan { background: #f59e0b; color: white; padding: 2px 6px; border-radius: 4px; }
</style>
</head>
<body>

<h2><?= $nama_sekolah ?><br>
Rekap Pelanggaran Bulanan - <?= date('F Y', strtotime("$tahun-$bulan-01")) ?><br>
<?= $kelas == '' ? 'Semua Kelas' : "Kelas $kelas" ?></h2>

<!-- Form filter -->
<form method="get">
    <label>Kelas:
      <select name="kelas">
        <option value="">Semua</option>
        <?php mysqli_data_seek($kelasList, 0);
        while ($k = mysqli_fetch_assoc($kelasList)) {
          $sel = ($k['kelas'] == $kelas) ? 'selected' : '';
          echo "<option $sel value='{$k['kelas']}'>{$k['kelas']}</option>";
        } ?>
      </select>
    </label>

    <label>Bulan:
      <select name="bulan">
        <?php for ($b = 1; $b <= 12; $b++) {
          $sel = ($b == $bulan) ? 'selected' : '';
          echo "<option $sel value='$b'>" . date('F', mktime(0, 0, 0, $b, 10)) . "</option>";
        } ?>
      </select>
    </label>

    <label>Tahun:
      <input type="number" name="tahun" value="<?= $tahun ?>" style="width:80px;">
    </label>

    <button type="submit">Tampilkan</button>
    <a href="cetak_pelanggaran.php?kelas=<?= $kelas ?>&bulan=<?= $bulan ?>&tahun=<?= $tahun ?>" target="_blank" style="padding:5px 10px; background:#28a745; color:#fff; text-decoration:none; border-radius:4px;">Cetak / Simpan PDF</a>
    <a href="dashboard_guru_piket.php" 
       style="padding:5px 10px; background:#6c757d; color:#fff; 
              text-decoration:none; border-radius:4px; margin-left:10px;">
       ⬅ Kembali ke Dashboard
    </a>
</form>

<!-- Ringkasan Statistik -->
<div class="summary">
    <div class="box total"><?= $totalGlobal['total_pelanggaran'] ?> <br>Total Pelanggaran</div>
    <div class="box poin"><?= $totalGlobal['total_poin'] ?> <br>Total Poin</div>
    <div class="box berat"><?= $totalGlobal['pelanggaran_berat'] ?> <br>Pelanggaran Berat</div>
    <div class="box sedang"><?= $totalGlobal['pelanggaran_sedang'] ?> <br>Pelanggaran Sedang</div>
    <div class="box ringan"><?= $totalGlobal['pelanggaran_ringan'] ?> <br>Pelanggaran Ringan</div>
    <div class="box rata"><?= $rataRataPoin ?> <br>Rata-rata Poin</div>
</div>

<!-- Tabel Rekap per Siswa -->
<h3>Rekap Pelanggaran per Siswa</h3>
<table>
    <tr>
        <th>No</th>
        <th>NIS</th>
        <th>NISN</th>
        <th>Nama Siswa</th>
        <th>Kelas</th>
        <th>Jml Pelanggaran</th>
        <th>Total Poin</th>
        <th>Berat</th>
        <th>Sedang</th>
        <th>Ringan</th>
        <th>Aktif</th>
        <th>Selesai</th>
        <th>Dialihkan</th>
        <th>Kategori</th>
    </tr>
    <?php
    $no = 1;
    foreach ($rekap as $r) {
        // Tentukan kategori siswa berdasarkan total poin
        $kategori = '';
        $kategoriClass = '';
        if ($r['total_poin'] >= 100) {
            $kategori = 'Berat';
            $kategoriClass = 'badge-berat';
        } elseif ($r['total_poin'] >= 50) {
            $kategori = 'Sedang';
            $kategoriClass = 'badge-sedang';
        } else {
            $kategori = 'Ringan';
            $kategoriClass = 'badge-ringan';
        }

        echo "<tr>
            <td>$no</td>
            <td>{$r['nis']}</td>
            <td>{$r['nisn']}</td>
            <td style='text-align:left'>{$r['nama']}</td>
            <td>{$r['kelas']}</td>
            <td><strong>{$r['jumlah_pelanggaran']}</strong></td>
            <td><strong>{$r['total_poin']}</strong></td>
            <td>{$r['pelanggaran_berat']}</td>
            <td>{$r['pelanggaran_sedang']}</td>
            <td>{$r['pelanggaran_ringan']}</td>
            <td><span class='badge-aktif'>{$r['status_aktif']}</span></td>
            <td><span class='badge-selesai'>{$r['status_selesai']}</span></td>
            <td>" . ($r['dialihkan'] > 0 ? "<span class='badge-dialihkan'>{$r['dialihkan']}</span>" : "-") . "</td>
            <td><span class='badge $kategoriClass'>$kategori</span></td>
        </tr>";
        $no++;
    }
    
    if ($no == 1) {
        echo "<tr><td colspan='14' style='text-align:center; padding:20px;'>Tidak ada data pelanggaran untuk periode ini</td></tr>";
    }
    ?>
</table>

<!-- Tabel Detail Pelanggaran -->
<h3 style="margin-top:30px;">Detail Pelanggaran</h3>
<table>
    <tr>
        <th>No</th>
        <th>Tanggal</th>
        <th>NISN</th>
        <th>Nama Siswa</th>
        <th>Kelas</th>
        <th>Jenis Pelanggaran</th>
        <th>Poin</th>
        <th>Klasifikasi</th>
        <th>Status</th>
        <th>Dialihkan</th>
        <th>Guru Pelapor</th>
    </tr>
    <?php
    $no = 1;
    foreach ($detailPelanggaran as $d) {
        // Klasifikasi berdasarkan poin
        $klasifikasi = '';
        $klasifikasiClass = '';
        if ($d['poin'] >= 50) {
            $klasifikasi = 'Berat';
            $klasifikasiClass = 'badge-berat';
        } elseif ($d['poin'] >= 25) {
            $klasifikasi = 'Sedang';
            $klasifikasiClass = 'badge-sedang';
        } else {
            $klasifikasi = 'Ringan';
            $klasifikasiClass = 'badge-ringan';
        }
        
        // Status
        $statusClass = ($d['status'] == 'Aktif') ? 'badge-aktif' : 'badge-selesai';
        
        // Dialihkan
        $dialihkan = ($d['status_alihkan'] == 'ya') ? '<span class="badge-dialihkan">Ya</span>' : '-';
        
        // Ambil nama guru pelapor
        $guru_nama = '-';
        if (!empty($d['guru_id'])) {
            $qGuru = mysqli_query($conn, "SELECT nama FROM guru WHERE id = {$d['guru_id']}");
            if ($g = mysqli_fetch_assoc($qGuru)) {
                $guru_nama = $g['nama'];
            }
        }

        echo "<tr>
            <td>$no</td>
            <td>" . date('d/m/Y', strtotime($d['tanggal'])) . "</td>
            <td>{$d['nisn']}</td>
            <td style='text-align:left'>{$d['nama']}</td>
            <td>{$d['kelas']}</td>
            <td style='text-align:left'>{$d['jenis_pelanggaran']}</td>
            <td><strong>{$d['poin']}</strong></td>
            <td><span class='badge $klasifikasiClass'>$klasifikasi</span></td>
            <td><span class='$statusClass'>{$d['status']}</span></td>
            <td>$dialihkan</td>
            <td>$guru_nama</td>
        </tr>";
        $no++;
    }
    
    if ($no == 1) {
        echo "<tr><td colspan='11' style='text-align:center; padding:20px;'>Tidak ada data pelanggaran untuk periode ini</td></tr>";
    }
    ?>
</table>

<br><br>
<table style="width:100%; border:0; font-size:14px; text-align:center;">
    <tr>
      <td style="width:50%;">
        Mengetahui,<br>
        Kepala Sekolah<br><br><br><br>
        <u><?= $profil['kepala_sekolah'] ?? '....................................' ?></u><br>
        NIP. <?= $profil['nip_kepala'] ?? '........................' ?>
      </td>
      <td style="width:50%;">
        <?= $tanggal_terakhir ?><br>
        Wali Kelas <?= $kelas != '' ? $kelas : '(Semua Kelas)' ?><br><br><br><br>
        <u><?= $wali_nama ?></u><br>
        NIP. <?= $wali_nip ?>
      </td>
    </tr>
</table>

</body>
</html>