<?php
// Pastikan tidak ada output sebelum ini
ob_start();

// Load library dompdf
require_once '../vendor/autoload.php';

use Dompdf\Dompdf;
use Dompdf\Options;

// Koneksi database
require_once '../config/database.php'; // Sesuaikan dengan file koneksi Anda

// Inisialisasi variabel
$tahun_aktif = null;
$id_tahun_aktif = null;
$search = isset($_GET['search']) ? mysqli_real_escape_string($conn, $_GET['search']) : '';

// Query untuk mendapatkan tahun ajaran yang aktif
$query_tahun_aktif = "SELECT id_tahunajaran, tahun_ajaran FROM bind_tahunajaran WHERE aktif = 1";
$result_tahun_aktif = mysqli_query($conn, $query_tahun_aktif);

// Build query dasar dengan JOIN ke bind_datasiswa
$query_base = "SELECT s.*, t.tahun_ajaran, t.aktif, ds.status as status_siswa,
               YEAR(s.tanggal_diterima) as tahun_diterima,
               UPPER(LEFT(s.nama_lengkap, 1)) as huruf_awal,
               CASE 
                   WHEN YEAR(s.tanggal_diterima) = YEAR(CURDATE()) THEN 'X'
                   WHEN YEAR(s.tanggal_diterima) = YEAR(CURDATE()) - 1 THEN 'XI'
                   WHEN YEAR(s.tanggal_diterima) = YEAR(CURDATE()) - 2 THEN 'XII'
                   ELSE 'Lulus'
               END as kelas
              FROM bind_siswa s 
              JOIN bind_datasiswa ds ON s.id_siswa = ds.id_siswa
              JOIN bind_tahunajaran t ON ds.id_tahunajaran = t.id_tahunajaran";

$query_where = "";

if ($result_tahun_aktif && mysqli_num_rows($result_tahun_aktif) > 0) {
    $tahun_aktif = mysqli_fetch_assoc($result_tahun_aktif);
    $id_tahun_aktif = $tahun_aktif['id_tahunajaran'];
    $query_where = " WHERE ds.id_tahunajaran = '$id_tahun_aktif'";
} 

// Tambahkan kondisi pencarian jika ada
if (!empty($search)) {
    if (empty($query_where)) {
        $query_where = " WHERE (s.nisn LIKE '%$search%' OR s.nama_lengkap LIKE '%$search%')";
    } else {
        $query_where .= " AND (s.nisn LIKE '%$search%' OR s.nama_lengkap LIKE '%$search%')";
    }
}

// Query untuk data - urutkan berdasarkan kelas, huruf awal nama, dan nama ascending
$query = $query_base . $query_where . " ORDER BY 
          CASE 
              WHEN kelas = 'X' THEN 1
              WHEN kelas = 'XI' THEN 2
              WHEN kelas = 'XII' THEN 3
              ELSE 4
          END,
          huruf_awal ASC,
          s.nama_lengkap ASC";
$result = mysqli_query($conn, $query);

// Query untuk statistik per kelas
$query_statistik = "SELECT 
    COUNT(*) as total,
    SUM(CASE WHEN YEAR(s.tanggal_diterima) = YEAR(CURDATE()) THEN 1 ELSE 0 END) as kelas_x,
    SUM(CASE WHEN YEAR(s.tanggal_diterima) = YEAR(CURDATE()) - 1 THEN 1 ELSE 0 END) as kelas_xi,
    SUM(CASE WHEN YEAR(s.tanggal_diterima) = YEAR(CURDATE()) - 2 THEN 1 ELSE 0 END) as kelas_xii,
    SUM(CASE WHEN YEAR(s.tanggal_diterima) < YEAR(CURDATE()) - 2 THEN 1 ELSE 0 END) as lulus
    FROM bind_siswa s 
    JOIN bind_datasiswa ds ON s.id_siswa = ds.id_siswa
    JOIN bind_tahunajaran t ON ds.id_tahunajaran = t.id_tahunajaran" . $query_where;
$result_statistik = mysqli_query($conn, $query_statistik);
$statistik = mysqli_fetch_assoc($result_statistik);

// Mulai membuat HTML untuk PDF
$html = '
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Data Klapper Siswa</title>
    <style>
        body {
            font-family: "DejaVu Sans", "Arial", sans-serif;
            font-size: 12px;
            line-height: 1.4;
            margin: 0;
            padding: 20px;
        }
        .header {
            text-align: center;
            margin-bottom: 20px;
            border-bottom: 2px solid #333;
            padding-bottom: 10px;
        }
        .header h1 {
            margin: 0;
            font-size: 18px;
            color: #333;
        }
        .header h2 {
            margin: 5px 0;
            font-size: 14px;
            color: #666;
        }
        .info-box {
            background-color: #f8f9fa;
            padding: 10px;
            border-radius: 5px;
            margin-bottom: 15px;
            border-left: 4px solid #007bff;
        }
        .statistik {
            display: flex;
            justify-content: space-between;
            margin-bottom: 20px;
        }
        .stat-item {
            text-align: center;
            padding: 10px;
            border-radius: 5px;
            flex: 1;
            margin: 0 5px;
        }
        .stat-x { background-color: #007bff; color: white; }
        .stat-xi { background-color: #28a745; color: white; }
        .stat-xii { background-color: #ffc107; color: black; }
        .stat-lulus { background-color: #6c757d; color: white; }
        .kelas-section {
            margin-bottom: 30px;
            page-break-inside: avoid;
        }
        .kelas-header {
            background-color: #e9ecef;
            padding: 8px 12px;
            border-radius: 5px;
            margin-bottom: 15px;
            font-weight: bold;
            font-size: 14px;
        }
        .huruf-section {
            margin-bottom: 20px;
            page-break-inside: avoid;
        }
        .huruf-header {
            background-color: #d1ecf1;
            padding: 6px 10px;
            border-radius: 3px;
            margin-bottom: 8px;
            font-weight: bold;
            font-size: 12px;
            border-left: 4px solid #17a2b8;
        }
        table {
            width: 100%;
            border-collapse: collapse;
            margin-bottom: 15px;
        }
        th {
            background-color: #343a40;
            color: white;
            padding: 8px;
            text-align: left;
            font-size: 10px;
            border: 1px solid #454d55;
        }
        td {
            padding: 6px;
            border: 1px solid #ddd;
            font-size: 10px;
        }
        tr:nth-child(even) {
            background-color: #f8f9fa;
        }
        .badge {
            padding: 4px 8px;
            border-radius: 10px;
            font-size: 11px;
            font-weight: bold;
        }
        .badge-x { background-color: #007bff; color: white; }
        .badge-xi { background-color: #28a745; color: white; }
        .badge-xii { background-color: #ffc107; color: black; }
        .badge-lulus { background-color: #6c757d; color: white; }
        .badge-huruf { 
            background-color: #17a2b8; 
            color: white; 
            padding: 3px 6px;
            border-radius: 3px;
            font-size: 11px;
        }
        .footer {
            text-align: center;
            margin-top: 30px;
            font-size: 10px;
            color: #666;
            border-top: 1px solid #ddd;
            padding-top: 10px;
        }
        .no-data {
            text-align: center;
            padding: 20px;
            color: #666;
            font-style: italic;
        }
        .pencarian-info {
            background-color: #fff3cd;
            padding: 8px;
            border-radius: 4px;
            margin-bottom: 15px;
            border-left: 4px solid #ffc107;
        }
        @page {
            margin: 15px;
        }
    </style>
</head>
<body>
    <div class="header">
        <h1>DATA KLAPPER SISWA</h1>
        <h2>SISTEM INFORMASI BUKU INDUK SEKOLAH</h2>
        <div>Dicetak pada: ' . date('d/m/Y H:i:s') . '</div>
    </div>';

// Informasi tahun ajaran
if ($tahun_aktif) {
    $html .= '
    <div class="info-box">
        <strong>Tahun Ajaran Aktif:</strong> ' . htmlspecialchars($tahun_aktif['tahun_ajaran']) . '
    </div>';
} else {
    $html .= '
    <div class="info-box" style="border-left-color: #ffc107;">
        <strong>Perhatian:</strong> Tidak ada tahun ajaran yang aktif. Menampilkan semua data siswa.
    </div>';
}

// Informasi pencarian
if (!empty($search)) {
    $html .= '
    <div class="pencarian-info">
        <strong>Hasil pencarian untuk:</strong> "' . htmlspecialchars($search) . '"
    </div>';
}

// Statistik
$html .= '
    <div class="statistik">
        <div class="stat-item stat-x">
            <div style="font-size: 14px; font-weight: bold;">KELAS X</div>
            <div style="font-size: 18px;">' . $statistik['kelas_x'] . '</div>
            <div>Siswa</div>
        </div>
        <div class="stat-item stat-xi">
            <div style="font-size: 14px; font-weight: bold;">KELAS XI</div>
            <div style="font-size: 18px;">' . $statistik['kelas_xi'] . '</div>
            <div>Siswa</div>
        </div>
        <div class="stat-item stat-xii">
            <div style="font-size: 14px; font-weight: bold;">KELAS XII</div>
            <div style="font-size: 18px;">' . $statistik['kelas_xii'] . '</div>
            <div>Siswa</div>
        </div>
        <div class="stat-item stat-lulus">
            <div style="font-size: 14px; font-weight: bold;">LULUS</div>
            <div style="font-size: 18px;">' . $statistik['lulus'] . '</div>
            <div>Siswa</div>
        </div>
    </div>';

// Data siswa per kelas dan per huruf
if ($result && mysqli_num_rows($result) > 0) {
    $current_kelas = '';
    $current_huruf = '';
    
    while ($row = mysqli_fetch_assoc($result)) {
        // Tampilkan header kelas jika berubah
        if ($current_kelas != $row['kelas']) {
            if ($current_kelas != '') {
                $html .= '</tbody></table></div></div>';
            }
            
            $current_kelas = $row['kelas'];
            $kelas_label = '';
            $badge_class = '';
            
            switch($current_kelas) {
                case 'X':
                    $kelas_label = 'KELAS X';
                    $badge_class = 'badge-x';
                    break;
                case 'XI':
                    $kelas_label = 'KELAS XI';
                    $badge_class = 'badge-xi';
                    break;
                case 'XII':
                    $kelas_label = 'KELAS XII';
                    $badge_class = 'badge-xii';
                    break;
                default:
                    $kelas_label = 'LULUS';
                    $badge_class = 'badge-lulus';
            }
            
            $html .= '
            <div class="kelas-section">
                <div class="kelas-header">
                    <span class="badge ' . $badge_class . '">' . $kelas_label . '</span>
                    <span style="margin-left: 10px;">Tahun Diterima: ' . $row['tahun_diterima'] . '</span>
                </div>';
            
            // Reset huruf untuk kelas baru
            $current_huruf = '';
            $no_kelas = 1;
        }
        
        // Tampilkan header huruf jika berubah
        if ($current_huruf != $row['huruf_awal']) {
            if ($current_huruf != '') {
                $html .= '</tbody></table></div>';
            }
            
            $current_huruf = $row['huruf_awal'];
            
            $html .= '
                <div class="huruf-section">
                    <div class="huruf-header">
                        <span class="badge-huruf">' . $current_huruf . '</span>
                        <span style="margin-left: 10px;">Huruf Awal: ' . $current_huruf . '</span>
                    </div>
                    <table>
                        <thead>
                            <tr>
                                <th style="width: 5%">NO</th>
                                <th style="width: 15%">NISN</th>
                                <th style="width: 12%">NIS</th>
                                <th style="width: 35%">NAMA LENGKAP</th>
                                <th style="width: 15%">JENIS KELAMIN</th>
                                <th style="width: 18%">TANGGAL DITERIMA</th>
                            </tr>
                        </thead>
                        <tbody>';
            
            // Reset nomor urut untuk huruf baru
            $no_huruf = 1;
        }
        
        $jenis_kelamin = $row['jenis_kelamin'] == 'L' ? 'Laki-laki' : 'Perempuan';
        $tanggal_diterima = $row['tanggal_diterima'] ? date('d/m/Y', strtotime($row['tanggal_diterima'])) : '-';
        
        $html .= '
                            <tr>
                                <td>' . $no_huruf . '</td>
                                <td>' . htmlspecialchars($row['nisn']) . '</td>
                                <td>' . htmlspecialchars($row['nis']) . '</td>
                                <td>' . htmlspecialchars($row['nama_lengkap']) . '</td>
                                <td>' . $jenis_kelamin . '</td>
                                <td>' . $tanggal_diterima . '</td>
                            </tr>';
        
        $no_huruf++;
        $no_kelas++;
    }
    
    // Tutup tabel dan section terakhir
    $html .= '</tbody></table></div></div>';
} else {
    $html .= '
    <div class="no-data">
        <h3>Belum ada data siswa</h3>
        <p>Tidak ada data siswa untuk ditampilkan</p>
    </div>';
}

// Footer
$html .= '
    <div class="footer">
        <p>Dokumen ini dicetak secara otomatis dari Sistem Informasi Buku Induk Sekolah</p>
    </div>
</body>
</html>';

// Bersihkan output buffer
ob_end_clean();

// Konfigurasi dompdf
$options = new Options();
$options->set('isHtml5ParserEnabled', true);
$options->set('isRemoteEnabled', true);
$options->set('defaultFont', 'DejaVu Sans');
$options->set('isPhpEnabled', true);

$dompdf = new Dompdf($options);
$dompdf->loadHtml($html);
$dompdf->setPaper('A4', 'portrait');
$dompdf->render();

// Output PDF
$dompdf->stream('data-klapper-siswa-' . date('Y-m-d') . '.pdf', [
    'Attachment' => false
]);

exit;
?>