<?php
// cetak_hierarki.php
// FILE INI ADALAH LAPORAN KHUSUS UNTUK DICETAK

// Non-aktifkan buffer output untuk performa cetak
// ob_start(); 
session_start();
include_once 'config/koneksi.php';

// Fungsi bantuan untuk mendapatkan ID Tahun Aktif
if (!function_exists('getTahunAktifId')) {
    function getTahunAktifId($conn) {
        $sql = "SELECT id FROM tahun_aktif WHERE is_aktif = 1 LIMIT 1";
        $result = $conn->query($sql);
        if ($result && $result->num_rows > 0) {
            return $result->fetch_assoc()['id'];
        }
        return null;
    }
}

if (!isset($_SESSION['user_id'])) {
    // Jika tidak login, alihkan
    header("Location: index.php");
    exit();
}

$is_admin = $_SESSION['is_admin'] ?? 0;
$tahun_aktif_id = getTahunAktifId($conn);

if (!$tahun_aktif_id) {
    echo '<div class="alert alert-danger">Tidak ada Tahun Aktif yang diatur.</div>';
    exit();
}

// Ambil tahun aktif untuk ditampilkan di judul laporan
$tahun_aktif = $conn->query("SELECT tahun FROM tahun_aktif WHERE id = {$tahun_aktif_id}")->fetch_assoc()['tahun'];

// --- 1. AMBIL DATA HIERARKI LENGKAP ---
// Kita akan melakukan JOIN untuk mengambil semua level data.
// Karena hierarki sangat dalam, kita akan mengambil data per level untuk kemudahan penataan di HTML.

$data_program = [];
$sql_program = "SELECT id, nama_program FROM program WHERE tahun_aktif_id = ? ORDER BY id ASC";
$stmt_prog = $conn->prepare($sql_program);
$stmt_prog->bind_param("i", $tahun_aktif_id);
$stmt_prog->execute();
$result_prog = $stmt_prog->get_result();
while ($prog = $result_prog->fetch_assoc()) {
    $prog['kegiatan'] = [];
    $data_program[$prog['id']] = $prog;
}
$stmt_prog->close();

$data_kegiatan = [];
if (!empty($data_program)) {
    $program_ids = implode(',', array_keys($data_program));
    $sql_kegiatan = "SELECT id, program_id, nama_kegiatan FROM kegiatan WHERE tahun_aktif_id = ? AND program_id IN ($program_ids) ORDER BY id ASC";
    $stmt_keg = $conn->prepare($sql_kegiatan);
    $stmt_keg->bind_param("i", $tahun_aktif_id);
    $stmt_keg->execute();
    $result_keg = $stmt_keg->get_result();
    while ($keg = $result_keg->fetch_assoc()) {
        $keg['subkegiatan'] = [];
        $data_kegiatan[$keg['id']] = $keg;
        $data_program[$keg['program_id']]['kegiatan'][$keg['id']] = &$data_kegiatan[$keg['id']];
    }
    $stmt_keg->close();
}

$data_subkegiatan = [];
if (!empty($data_kegiatan)) {
    $kegiatan_ids = implode(',', array_keys($data_kegiatan));
    $sql_subkeg = "SELECT id, kegiatan_id, nama_subkegiatan FROM subkegiatan WHERE tahun_aktif_id = ? AND kegiatan_id IN ($kegiatan_ids) ORDER BY id ASC";
    $stmt_subkeg = $conn->prepare($sql_subkeg);
    $stmt_subkeg->bind_param("i", $tahun_aktif_id);
    $stmt_subkeg->execute();
    $result_subkeg = $stmt_subkeg->get_result();
    while ($subkeg = $result_subkeg->fetch_assoc()) {
        $subkeg['komponen'] = [];
        $data_subkegiatan[$subkeg['id']] = $subkeg;
        $data_kegiatan[$subkeg['kegiatan_id']]['subkegiatan'][$subkeg['id']] = &$data_subkegiatan[$subkeg['id']];
    }
    $stmt_subkeg->close();
}

$data_komponen = [];
if (!empty($data_subkegiatan)) {
    $subkegiatan_ids = implode(',', array_keys($data_subkegiatan));
    $sql_komp = "SELECT id, subkegiatan_id, nama_komponen FROM komponen WHERE tahun_aktif_id = ? AND subkegiatan_id IN ($subkegiatan_ids) ORDER BY id ASC";
    $stmt_komp = $conn->prepare($sql_komp);
    $stmt_komp->bind_param("i", $tahun_aktif_id);
    $stmt_komp->execute();
    $result_komp = $stmt_komp->get_result();
    while ($komp = $result_komp->fetch_assoc()) {
        $komp['subkomponen'] = [];
        $data_komponen[$komp['id']] = $komp;
        $data_subkegiatan[$komp['subkegiatan_id']]['komponen'][$komp['id']] = &$data_komponen[$komp['id']];
    }
    $stmt_komp->close();
}

$data_subkomponen = [];
if (!empty($data_komponen)) {
    $komponen_ids = implode(',', array_keys($data_komponen));
    $sql_subkomp = "SELECT id, komponen_id, nama_subkomponen FROM subkomponen WHERE tahun_aktif_id = ? AND komponen_id IN ($komponen_ids) ORDER BY id ASC";
    $stmt_subkomp = $conn->prepare($sql_subkomp);
    $stmt_subkomp->bind_param("i", $tahun_aktif_id);
    $stmt_subkomp->execute();
    $result_subkomp = $stmt_subkomp->get_result();
    while ($subkomp = $result_subkomp->fetch_assoc()) {
        $subkomp['detail_kegiatan'] = [];
        $data_subkomponen[$subkomp['id']] = $subkomp;
        $data_komponen[$subkomp['komponen_id']]['subkomponen'][$subkomp['id']] = &$data_subkomponen[$subkomp['id']];
    }
    $stmt_subkomp->close();
}

$data_detail = [];
if (!empty($data_subkomponen)) {
    $subkomponen_ids = implode(',', array_keys($data_subkomponen));
    $sql_detail = "SELECT id, subkomponen_id, nama_detail FROM detail_kegiatan WHERE tahun_aktif_id = ? AND subkomponen_id IN ($subkomponen_ids) ORDER BY id ASC";
    $stmt_detail = $conn->prepare($sql_detail);
    $stmt_detail->bind_param("i", $tahun_aktif_id);
    $stmt_detail->execute();
    $result_detail = $stmt_detail->get_result();
    while ($detail = $result_detail->fetch_assoc()) {
        $data_detail[$detail['id']] = $detail;
        $data_subkomponen[$detail['subkomponen_id']]['detail_kegiatan'][$detail['id']] = $detail;
    }
    $stmt_detail->close();
}

?>
<!DOCTYPE html>
<html lang="id">
<head>
    <title>Cetak Hierarki Kegiatan BPS Tahun <?php echo htmlspecialchars($tahun_aktif); ?></title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body { font-size: 11pt; }
        .container-fluid { padding: 30px; }
        h1 { text-align: center; margin-bottom: 30px; }
        .program-title { font-size: 16pt; font-weight: bold; margin-top: 20px; border-bottom: 2px solid #000; padding-bottom: 5px;}
        .kegiatan-title { font-size: 14pt; font-weight: bold; margin-top: 15px; margin-left: 10px; }
        .subkegiatan-item { margin-left: 20px; margin-top: 5px; }
        .komponen-item { margin-left: 40px; }
        .subkomponen-item { margin-left: 60px; }
        .detail-item { margin-left: 80px; font-style: italic; }
        .label-hierarki { font-weight: bold; display: inline-block; width: 150px; }
        
        /* Gaya untuk cetak */
        @media print {
            .btn-print { display: none; }
            body { margin: 0; padding: 0; }
            .container-fluid { width: 100%; margin: 0; padding: 0; }
            .detail-item { font-size: 10pt; }
            .page-break { page-break-before: always; }
        }
    </style>
</head>
<body onload="window.print()">
<div class="container-fluid">
    
    <h1>KEGIATAN BPS MALRA</h1>
    <h2 class="text-center">TAHUN ANGGARAN <?php echo htmlspecialchars($tahun_aktif); ?></h2>
    
    <?php if (empty($data_program)): ?>
        <div class="alert alert-warning text-center">
            Tidak ada data Program yang ditemukan untuk Tahun Aktif ini.
        </div>
    <?php else: ?>
        <button class="btn btn-primary btn-print mb-3" onclick="window.print()"><i class="bi bi-printer"></i> Cetak</button>
        <a href="dashboard.php" class="btn btn-secondary btn-print mb-3"><i class="bi bi-arrow-left"></i> Kembali</a>
        
        <?php foreach ($data_program as $program): ?>
            <div class="program-title"><?php echo htmlspecialchars($program['nama_program']); ?></div>
            
            <?php if (empty($program['kegiatan'])): ?>
                <div class="alert alert-light mt-2 ms-5">Tidak ada Kegiatan terkait.</div>
            <?php else: ?>
                <?php foreach ($program['kegiatan'] as $kegiatan): ?>
                    <div class="kegiatan-title">-- <?php echo htmlspecialchars($kegiatan['nama_kegiatan']); ?></div>
                    
                    <?php if (empty($kegiatan['subkegiatan'])): ?>
                        <div class="alert alert-light mt-2 ms-5">Tidak ada Subkegiatan terkait.</div>
                    <?php else: ?>
                        <?php foreach ($kegiatan['subkegiatan'] as $subkegiatan): ?>
                            <div class="subkegiatan-item mt-3">
                                <span class="label-hierarki">Subkegiatan:</span>
                                <span><?php echo htmlspecialchars($subkegiatan['nama_subkegiatan']); ?></span>
                            </div>
                            
                            <?php if (empty($subkegiatan['komponen'])): ?>
                                <div class="alert alert-light mt-2 ms-5">Tidak ada Komponen terkait.</div>
                            <?php else: ?>
                                <?php foreach ($subkegiatan['komponen'] as $komponen): ?>
                                    <div class="komponen-item mt-2">
                                        <span class="label-hierarki">Komponen:</span>
                                        <span><?php echo htmlspecialchars($komponen['nama_komponen']); ?></span>
                                    </div>
                                    
                                    <?php if (empty($komponen['subkomponen'])): ?>
                                        <div class="alert alert-light mt-2 ms-5">Tidak ada Subkomponen terkait.</div>
                                    <?php else: ?>
                                        <?php foreach ($komponen['subkomponen'] as $subkomponen): ?>
                                            <div class="subkomponen-item mt-1">
                                                <span class="label-hierarki">Subkomponen:</span>
                                                <span><?php echo htmlspecialchars($subkomponen['nama_subkomponen']); ?></span>
                                            </div>
                                            
                                            <?php if (empty($subkomponen['detail_kegiatan'])): ?>
                                                <div class="alert alert-light mt-2 ms-5">Tidak ada Detail Kegiatan terkait.</div>
                                            <?php else: ?>
                                                <?php foreach ($subkomponen['detail_kegiatan'] as $detail): ?>
                                                    <div class="detail-item">
                                                        <i class="bi bi-dash-lg"></i> <?php echo htmlspecialchars($detail['nama_detail']); ?>
                                                    </div>
                                                <?php endforeach; ?>
                                            <?php endif; ?>
                                            
                                        <?php endforeach; ?>
                                    <?php endif; ?>
                                    
                                <?php endforeach; ?>
                            <?php endif; ?>
                            
                        <?php endforeach; ?>
                    <?php endif; ?>
                    
                <?php endforeach; ?>
            <?php endif; ?>
            
            <div class="page-break"></div> <?php endforeach; ?>
        
    <?php endif; ?>
</div>

<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>