<?php
namespace App\Controllers;

use Core\Database;
use PDO;

class DownloadDataSkripsiController
{
    private $db;

    public function __construct()
    {
        $this->db = Database::getConnection();
    }

    public function index()
    {
        $bulanAwal = isset($_GET['bulan_awal']) ? $_GET['bulan_awal'] : date('m');
        $bulanAkhir = isset($_GET['bulan_akhir']) ? $_GET['bulan_akhir'] : date('m');
        $tahun = isset($_GET['tahun']) ? $_GET['tahun'] : date('Y');

        if (!preg_match('/^\d{4}$/', $tahun) || !preg_match('/^\d{2}$/', $bulanAwal) || !preg_match('/^\d{2}$/', $bulanAkhir)) {
            die('Parameter tidak valid.');
        }

        if ((int)$bulanAwal > (int)$bulanAkhir) {
            die('Bulan awal tidak boleh lebih besar dari bulan akhir.');
        }

        $start = "$tahun-$bulanAwal-01 00:00:00";
        $end = date("Y-m-t 23:59:59", strtotime("$tahun-$bulanAkhir-01"));

        $stmt = $this->db->prepare("SELECT * FROM tb_sidang_skripsi WHERE tanggal_daftar BETWEEN :start AND :end ORDER BY tanggal_daftar DESC");
        $stmt->execute(['start' => $start, 'end' => $end]);
        $data = $stmt->fetchAll(PDO::FETCH_ASSOC);

        // Format tanggal Indonesia
        function formatTanggalIndo($tanggal)
        {
            $bulanIndo = [
                '01' => 'Januari', '02' => 'Februari', '03' => 'Maret', '04' => 'April',
                '05' => 'Mei', '06' => 'Juni', '07' => 'Juli', '08' => 'Agustus',
                '09' => 'September', '10' => 'Oktober', '11' => 'November', '12' => 'Desember'
            ];

            $parts = explode('-', substr($tanggal, 0, 10));
            return $parts[2] . ' ' . $bulanIndo[$parts[1]] . ' ' . $parts[0];
        }

        header("Content-Type: application/vnd.ms-excel");
        header("Content-Disposition: attachment; filename=Data_SidangSkripsi_{$bulanAwal}_{$bulanAkhir}_{$tahun}.xls");

        echo "<table border='1'>
              <tr>
                <th>No</th><th>NIM</th><th>Nama</th><th>Prodi</th><th>NIK</th><th>TTL</th>
                <th>Alamat</th><th>Judul</th><th>Pembimbing 1</th><th>Pembimbing 2</th><th>Tanggal Daftar</th>
              </tr>";

        foreach ($data as $i => $row) {
            $prodi = $row['prodi'];
            if ($prodi === 'Pendidikan Guru Sekolah Dasar') $prodi = 'PGSD';
            elseif ($prodi === 'Pendidikan Guru Pendidikan Anak Usia Dini') $prodi = 'PGPAUD';

            $tanggalDaftar = formatTanggalIndo($row['tanggal_daftar']);

            echo "<tr>
              <td>" . ($i + 1) . "</td>
              <td>{$row['nim']}</td>
              <td>{$row['nama']}</td>
              <td>{$prodi}</td>
              <td>'{$row['nik']}</td>
              <td>{$row['ttl']}</td>
              <td>{$row['alamat']}</td>
              <td>{$row['judul']}</td>
              <td>{$row['pembimbing1']}</td>
              <td>{$row['pembimbing2']}</td>
              <td>{$tanggalDaftar}</td>
            </tr>";
        }

        echo "</table>";
        exit;
    }
}
