<?php
// admin/get_lampiran_aktif.php
include '../config/database.php';

header('Content-Type: application/json');

try {
    // 1. Dapatkan ID Tahun Ajaran yang Aktif
    $stmt_tahun_aktif = $pdo->query("SELECT id_tahun_ajaran FROM tahun_ajaran WHERE status = 'aktif' LIMIT 1");
    $id_tahun_aktif = $stmt_tahun_aktif->fetchColumn();
    if (!$id_tahun_aktif) {
        throw new Exception('Tahun ajaran aktif tidak ditemukan.');
    }

    // 2. Dapatkan data 'penilaian_ke' dari database
    $stmt_penilaian_ke = $pdo->query("SELECT penilaian_ke FROM kepmad LIMIT 1");
    $penilaian_ke = $stmt_penilaian_ke->fetchColumn() ?: 1; // Default ke 1 jika tidak ada data

    // 3. Dapatkan ID Bukti Fisik saat ini untuk dikecualikan
    $id_bukti_sekarang = isset($_GET['current_id']) ? filter_var($_GET['current_id'], FILTER_SANITIZE_NUMBER_INT) : 0;
    
    // 4. Bangun Query SQL secara dinamis
    $sql = "SELECT 
                ku.kode_kompetensi, ku.nama_kompetensi,
                utu.kode_unsur, utu.nama_unsur,
                ik.kode_indikator, ik.deskripsi_indikator,
                bf.id_bukti, bf.kode_buktifisik, bf.nama_bukti,
                lb.id_lampiran, lb.tipe_lampiran, lb.path_lampiran, lb.nama_asli_file
            FROM lampiran_bukti lb
            JOIN bukti_fisik bf ON lb.id_bukti_fk = bf.id_bukti
            JOIN indikator_kinerja ik ON bf.id_indikator_fk = ik.id_indikator
            JOIN unsur_tugas_utama utu ON ik.id_unsur_fk = utu.id_unsur
            JOIN kompetensi_utama ku ON utu.id_kompetensi_fk = ku.id_kompetensi
            JOIN (
                SELECT MIN(id_lampiran) as min_id 
                FROM lampiran_bukti 
                WHERE id_tahun_ajaran_fk = ?
                GROUP BY path_lampiran
            ) as unique_files ON lb.id_lampiran = unique_files.min_id
            WHERE lb.id_tahun_ajaran_fk = ?
            AND bf.id_bukti != ?";

    // Tambahkan kondisi untuk mengecualikan Kompetensi E jika bukan tahun ke-4
    if ($penilaian_ke != 4) {
        $sql .= " AND ku.kode_kompetensi != 'E'";
    }

    $sql .= " ORDER BY ku.kode_kompetensi, utu.kode_unsur, ik.kode_indikator, bf.id_bukti";
    
    $stmt = $pdo->prepare($sql);
    $stmt->execute([$id_tahun_aktif, $id_tahun_aktif, $id_bukti_sekarang]);
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // 5. Proses data menjadi struktur hirarki (tidak ada perubahan di sini)
    $hirarki = [];
    foreach ($results as $row) {
        $kompetensi_key = $row['kode_kompetensi'];
        $unsur_key = $row['kode_unsur'];
        $indikator_key = $row['kode_indikator'];
        $bukti_key = $row['id_bukti'];

        if (!isset($hirarki[$kompetensi_key])) {
            $hirarki[$kompetensi_key] = ['nama' => $row['kode_kompetensi'] . '. ' . $row['nama_kompetensi'], 'unsur' => []];
        }
        if (!isset($hirarki[$kompetensi_key]['unsur'][$unsur_key])) {
            $hirarki[$kompetensi_key]['unsur'][$unsur_key] = ['nama' => $row['kode_unsur'] . '. ' . $row['nama_unsur'], 'indikator' => []];
        }
        if (!isset($hirarki[$kompetensi_key]['unsur'][$unsur_key]['indikator'][$indikator_key])) {
            $hirarki[$kompetensi_key]['unsur'][$unsur_key]['indikator'][$indikator_key] = ['nama' => $row['kode_indikator'] . '. ' . $row['deskripsi_indikator'], 'bukti' => []];
        }
        
        if (!isset($hirarki[$kompetensi_key]['unsur'][$unsur_key]['indikator'][$indikator_key]['bukti'][$bukti_key])) {
             $hirarki[$kompetensi_key]['unsur'][$unsur_key]['indikator'][$indikator_key]['bukti'][$bukti_key] = [
                'nama' => $row['kode_buktifisik'] . '. ' . ltrim($row['nama_bukti'], ' -'),
                'lampiran' => []
            ];
        }
       
        $hirarki[$kompetensi_key]['unsur'][$unsur_key]['indikator'][$indikator_key]['bukti'][$bukti_key]['lampiran'][] = [
            'id_lampiran' => $row['id_lampiran'],
            'tipe' => $row['tipe_lampiran'],
            'path' => $row['path_lampiran'],
            'nama_asli' => $row['nama_asli_file']
        ];
    }
    
    echo json_encode($hirarki);

} catch (Exception $e) {
    http_response_code(500);
    echo json_encode(['error' => $e->getMessage()]);
}
?>