<?php
namespace App\Controllers;

use FPDF;
use Core\Controller;
use Core\Database;

require_once __DIR__ . '/../libraries/fpdf/fpdff4.php';

class PDFSidangSkrController extends Controller
{
    public function hasilPDF()
    {
		$nama = $_SESSION['user']['nama'] ?? null;
        $db = Database::getConnection();
		
		$nim = $_GET['nim'] ?? null;
		
		$mahasiswa = $db->prepare("SELECT * FROM tb_mahasiswa WHERE nim = ?");
        $mahasiswa->execute([$nim]);
        $mhs = $mahasiswa->fetch();

        $sidang = $db->prepare("SELECT * FROM tb_sidang_skripsi WHERE nim = ?");
        $sidang->execute([$nim]);
        $skripsi = $sidang->fetch();
		
		if (!$skripsi) {
			// Jika data sidang skripsi tidak ditemukan, tampilkan alert dan redirect
			echo "<script>
				alert('Eits,... yang belum daftar sidang segera daftar terlebih dahulu :)');
				window.location.href = '/dashboard/mahasiswa-daftarskripsi';
			</script>";
			exit; // Hentikan eksekusi script supaya tidak lanjut ke bawah
		}

        $kelas = $db->prepare("SELECT smt, kode_kelas FROM tb_kelas WHERE nim = ? ORDER BY smt DESC LIMIT 1");
        $kelas->execute([$nim]);
        $kelasData = $kelas->fetch();

        $semester = $this->semesterKeKata($kelasData['smt'] ?? null);
        $kelasText = $semester . " / " . ($kelasData['kode_kelas'] ?? "-");

        $tanggal = new \DateTime($skripsi['tanggal_daftar'] ?? date('Y-m-d'));
        $tanggal_indonesia = $tanggal->format('d F Y');

        $kaprodi = $this->getKaprodi($skripsi['prodi'] ?? '', $db);

        $pdf = new FPDF('P', 'mm', [210, 330]);
        $pdf->AddPage();
        $pdf->SetFont('Times', 'B', 12);
        $pdf->Cell(0, 5, 'FORMULIR PENDAFTARAN SIDANG SKRIPSI', 0, 1, 'C');
        $pdf->Cell(0, 5, 'STKIP BABUNNAJAH PANDEGLANG', 0, 1, 'C');
        $pdf->Cell(0, 5, 'TAHUN ' . date('Y'), 0, 1, 'C');
        $pdf->Ln(5);

        $pdf->SetFont('Times', 'B', 11);
        $pdf->Cell(0, 6, 'A. Biodata Mahasiswa', 0, 1);
        $pdf->SetFont('Times', '', 10);

        $biodata = [
            "Nama Lengkap (sesuai ijazah)" => $skripsi['nama'] ?? '-',
            "NIM" => $nim,
            "NIK" => $skripsi['nik'] ?? '-',
            "Tempat, Tanggal Lahir" => $skripsi['ttl'] ?? '-',
            "Semester/Kelas" => $kelasText,
            "Program Studi" => $skripsi['prodi'] ?? '-',
            "Alamat" => $skripsi['alamat'] ?? '-',
            "No. Kontak/HP" => $mhs['telpon'] ?? '-'
        ];

        foreach ($biodata as $label => $val) {
            $pdf->Cell(70, 6, $label, 0, 0);
            $pdf->Cell(5, 6, ':', 0, 0);
            $pdf->MultiCell(0, 6, $val, 0);
        }

        $pdf->Ln(2);
        $pdf->SetFont('Times', 'B', 11);
        $pdf->Cell(0, 6, 'B. Judul Skripsi', 0, 1);
        $pdf->SetFont('Times', '', 10);
        $pdf->MultiCell(0, 6, $skripsi['judul'] ?? '-', 0);

        $pdf->Ln(2);
        $pdf->SetFont('Times', 'B', 11);
        $pdf->Cell(0, 6, 'C. Pelaksanaan Sidang Skripsi', 0, 1);
        $pdf->SetFont('Times', '', 10);

        $pdf->Cell(10, 6, 'No', 1);
        $pdf->Cell(60, 6, 'Hari/Tanggal', 1);
        $pdf->Cell(60, 6, 'Gelombang', 1);
        $pdf->Cell(60, 6, 'Keterangan', 1, 1);

        $jadwal = [
            ['Senin, 14 Juli 2025', 'I'],
            ['Senin, 28 Juli 2025', 'II'],
            ['Senin, 11 Agustus 2025', 'III']
        ];
        $i = 1;
        foreach ($jadwal as $j) {
            $pdf->Cell(10, 6, $i++, 1);
            $pdf->Cell(60, 6, $j[0], 1);
            $pdf->Cell(60, 6, $j[1], 1);
            $pdf->Cell(60, 6, '', 1, 1);
        }

        $pdf->Ln(2);
        $pdf->SetFont('Times', 'B', 11);
        $pdf->Cell(0, 6, 'D. Persyaratan Seminar Sidang Skripsi', 0, 1);
        $pdf->SetFont('Times', '', 10);

        $syarat = [
            "Bukti Pembayaran/Memo dari Bendahara",
            "Mengisi Formulir Pendaftaran Sidang Skripsi",
            "Fotocopy Kartu Tanda Mahasiswa (KTM)",
            "Fotocopy Kartu Tanda Penduduk (KTP)",
            "Fotocopy Kartu Keluarga (KK)",
            "Fotocopy Akta Kelahiran",
            "Fotocopy Ijazah SMA/MA/SMK/Sederajat dilegalisir",
            "Fotocopy Sertifikat Kuliah Ta'aruf",
            "Fotocopy Sertifikat Stadium General",
            "Fotocopy Sertifikat LDKM",
            "Fotocopy Sertifikat Kunjungan Edukasi",
            "Fotocopy Sertifikat Field Trip Prodi PGSD",
            "Fotocopy Sertifikat KMD Prodi PGSD",
            "Fotocopy Sertifikat Manasik Haji Prodi PGPAUD",
            "Fotocopy Sertifikat PPLK",
            "Fotocopy Sertifikat KKN",
            "Fotocopy Transkip Nilai Sementara (Semester Akhir)",
            "Fotocopy Skripsi (jilid orange) yg sudah ditndtangani/ACC Dosen Pembimbing 1, 2, & Kaprodi (2 eks)"
        ];
		


        $no = 1;
        foreach ($syarat as $s) {
            $pdf->Cell(10, 6, $no++, 1);
            $pdf->Cell(150, 6, $s, 1);
            $pdf->Cell(30, 6, '', 1, 1);
        }
		
 
		$pdf->Ln(2);
		$pdf->SetFont('Times', 'I', 10);
		$pdf->MultiCell(0, 5, "Keterangan: Pengumpulan persyaratan yang diterima adalah ukuran A4 sebanyak 1 rangkap paling lambat 3 hari sebelum ujian dan sudah disusun dalam MAP snile hekter warna putih.");


		
	$pdf->Ln(2);
    $pdf->SetFont('Times', '', 10);
    
    $pdf->Cell(95, 6, 'Mengetahui,', 0, 0, 'L');
    $pdf->SetX(125); 
    $pdf->Cell(95, 6, 'Pandeglang, ' . $tanggal_indonesia, 0, 1, 'L');
    
    $pdf->Cell(95, 6, 'Ketua Program Studi,', 0, 0, 'L');
    $pdf->SetX(125);
    $pdf->Cell(95, 6, 'Mahasiswa,', 0, 1, 'L');
    
    $pdf->Ln(10); // Spasi untuk tanda tangan
    
    // Tampilkan Nama Kaprodi dan NIM
    $pdf->Cell(95, 6, $kaprodi, 0, 0, 'L'); // Nama Kaprodi
    $pdf->SetX(125);
    $pdf->Cell(95, 6, $nama, 0, 0, 'L'); // Nama Mahasiswa
    $pdf->Ln(3);
    // Tampilkan NIM dengan label "NIM : "
    $pdf->SetX(125);
    $pdf->Cell(10, 6, 'NIM : ', 0, 0, 'L'); // Label "NIM :"
    $pdf->Cell(3, 6, $nim, 0, 1, 'L'); // NIM mahasiswa

        $pdf->Output("I", "formulir_sidang_$nim.pdf");
    }

    private function semesterKeKata($smt)
    {
        $map = [1 => 'Satu', 2 => 'Dua', 3 => 'Tiga', 4 => 'Empat', 5 => 'Lima', 6 => 'Enam', 7 => 'Tujuh', 8 => 'Delapan'];
        return $map[$smt] ?? '-';
    }

    private function getKaprodi($prodi, $db)
    {
        $id_prodi = $prodi === 'PGSD' ? 86206 : ($prodi === 'PGPAUD' ? 86207 : null);
        if (!$id_prodi) return '-';

        $stmt = $db->prepare("SELECT kaprodi FROM tb_prodi WHERE id_prodi = ?");
        $stmt->execute([$id_prodi]);
        return $stmt->fetchColumn() ?? '-';
    }
}
