<?php
// 1. SETUP AWAL
session_start();
require '../vendor/autoload.php'; // Muat semua library dari Composer
include '../config/koneksi.php';

// 2. KELAS KUSTOM UNTUK HEADER & FOOTER
class MYPDF extends TCPDF {
    // Page header
    public function Header() {
        // Atur font
        $this->SetFont('helvetica', 'B', 16);
        // Judul
        $this->Cell(0, 15, 'MADU MANDIRI SAVING', 0, false, 'C', 0, '', 0, false, 'M', 'M');
        $this->Ln(10);
        $this->SetFont('helvetica', '', 10);
        $this->Cell(0, 10, 'Rekapitulasi Transaksi Siswa', 0, false, 'C', 0, '', 0, false, 'M', 'M');
        $this->Ln(5);
        $this->Line($this->GetX(), $this->GetY(), $this->GetPageWidth() - $this->GetX(), $this->GetY());
    }

    // Page footer
    public function Footer() {
        // Posisi 1.5 cm dari bawah
        $this->SetY(-15);
        // Atur font
        $this->SetFont('helvetica', 'I', 8);
        // Nomor halaman
        $this->Cell(0, 10, 'Halaman ' . $this->getAliasNumPage() . '/' . $this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
    }
}

// 3. PROSES UTAMA
// Validasi session
if (!isset($_SESSION['user_logged_in']) || $_SESSION['user_type'] != 'siswa') {
    die("Akses ditolak.");
}

// Pengambilan data siswa
$id_siswa = $_SESSION['id_user'];

$stmt_siswa = $pdo->prepare("SELECT nama_siswa, nis FROM siswa WHERE id_siswa = ?");
$stmt_siswa->execute([$id_siswa]);
$data_siswa = $stmt_siswa->fetch();
$nama_siswa = $data_siswa['nama_siswa'] ?? 'Siswa';
$nis_siswa = $data_siswa['nis'] ?? '-';

// Pengambilan semua data transaksi untuk siswa yang login, tanpa filter tanggal
$stmt_transaksi = $pdo->prepare("SELECT * FROM transaksi WHERE id_siswa = ? ORDER BY tanggal_transaksi ASC, id_transaksi ASC");
$stmt_transaksi->execute([$id_siswa]);
$transaksi_list = $stmt_transaksi->fetchAll();

// 4. MEMBUAT DOKUMEN PDF
// Buat instance PDF baru menggunakan kelas kustom kita
$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

// Atur informasi dokumen
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('Sistem MMS');
$pdf->SetTitle('Rekap Transaksi - ' . $nama_siswa);
$pdf->SetSubject('Laporan Transaksi Keuangan Siswa');

// Atur header dan footer
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// Atur margin
$pdf->SetMargins(PDF_MARGIN_LEFT, 40, PDF_MARGIN_RIGHT); // Margin atas 40 untuk memberi ruang pada header
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// Atur auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// Tambah halaman baru
$pdf->AddPage();

// Tulis info siswa
$pdf->SetFont('helvetica', '', 10);
$pdf->Cell(20, 6, 'Nama Siswa', 0, 0, 'L');
$pdf->Cell(5, 6, ':', 0, 0, 'C');
$pdf->Cell(0, 6, $nama_siswa, 0, 1, 'L');
$pdf->Cell(20, 6, 'NIS', 0, 0, 'L');
$pdf->Cell(5, 6, ':', 0, 0, 'C');
$pdf->Cell(0, 6, $nis_siswa, 0, 1, 'L');
$pdf->Ln(5); // Jarak

// Menggambar Tabel
$pdf->SetFont('helvetica', 'B', 9);
$pdf->SetFillColor(224, 235, 255); // Warna latar header tabel

// Definisikan lebar kolom
$w = [28, 35, 25, 25, 30, 47];
$header = ['Tanggal', 'Jenis Transaksi', 'Debet', 'Kredit', 'Saldo', 'Keterangan'];

// Tulis header tabel
for($i = 0; $i < count($header); $i++) {
    $pdf->Cell($w[$i], 7, $header[$i], 1, 0, 'C', true);
}
$pdf->Ln(); // Pindah baris

// Tulis data
$pdf->SetFont('helvetica', '', 9);
$pdf->SetFillColor(255);
$fill = false; // Untuk warna selang-seling (opsional)
$saldo = 0;
foreach($transaksi_list as $row) {
    if ($row['status'] != 'valid') continue;

    $debet = 0;
    $kredit = 0;
    
    if (in_array($row['jenis_transaksi'], ['setoran', 'transfer_masuk'])) {
        $kredit = $row['jumlah'];
        $saldo += $kredit;
    } else if (in_array($row['jenis_transaksi'], ['penarikan', 'transfer_keluar', 'pembayaran'])) {
        $debet = $row['jumlah'];
        $saldo -= $debet;
    }

    // Tulis setiap sel
    $pdf->Cell($w[0], 6, date('d-m-Y H:i', strtotime($row['tanggal_transaksi'])), 'LR', 0, 'L', $fill);
    $pdf->Cell($w[1], 6, str_replace('_', ' ', ucfirst($row['jenis_transaksi'])), 'LR', 0, 'L', $fill);
    $pdf->Cell($w[2], 6, ($debet > 0 ? 'Rp' . number_format($debet, 0, ',', '.') : '-'), 'LR', 0, 'R', $fill);
    $pdf->Cell($w[3], 6, ($kredit > 0 ? 'Rp' . number_format($kredit, 0, ',', '.') : '-'), 'LR', 0, 'R', $fill);
    $pdf->Cell($w[4], 6, 'Rp' . number_format($saldo, 0, ',', '.'), 'LR', 0, 'R', $fill);
    $pdf->Cell($w[5], 6, $row['keterangan'] ?: '-', 'LR', 0, 'L', $fill);
    $pdf->Ln(); // Pindah baris
    $fill = !$fill;
}

// Garis penutup tabel
$pdf->Cell(array_sum($w), 0, '', 'T');


// 5. TUTUP DAN KIRIM DOKUMEN
// Nama file
$filename = "Rekap_Transaksi_" . str_replace(' ', '_', $nama_siswa) . ".pdf";
// Kirim ke browser
$pdf->Output($filename, 'I');