<?php
require_once '../auth/cek_login.php';
require_role('admin');
require_once '../config/koneksi.php';


if (!function_exists('pastikan_kolom_siswa')) {
    function pastikan_kolom_siswa($conn, $kolom, $definisi)
    {
        $cek = $conn->query("SHOW COLUMNS FROM siswa LIKE '" . $conn->real_escape_string($kolom) . "'");
        if ($cek && $cek->num_rows == 0) {
            $conn->query("ALTER TABLE siswa ADD `$kolom` $definisi");
        }
    }
}
pastikan_kolom_siswa($conn, 'nama_orang_tua', 'VARCHAR(120) NULL');

if (!function_exists('kode_bersih')) {
    function kode_bersih($text)
    {
        $text = strtoupper(trim((string)$text));
        $text = preg_replace('/[^A-Z0-9]/', '', $text);
        return $text;
    }
}

if (!function_exists('generate_no_ujian')) {
    function generate_no_ujian($conn)
    {
        $profil = $conn->query("
            SELECT 
                kode_sekolah,
                kode_kabupaten,
                kode_provinsi
            FROM profil_sekolah
            LIMIT 1
        ")->fetch_assoc();

        $kode_sekolah   = kode_bersih($profil['kode_sekolah'] ?? '01');
        $kode_kabupaten = kode_bersih($profil['kode_kabupaten'] ?? '03');
        $kode_provinsi  = kode_bersih($profil['kode_provinsi'] ?? '25');

        $prefix = $kode_sekolah . $kode_kabupaten . $kode_provinsi;

        $q = $conn->query("
            SELECT no_ujian
            FROM siswa
            WHERE no_ujian LIKE '$prefix%'
            ORDER BY no_ujian DESC
            LIMIT 1
        ");

        $last = 0;

        if ($q && $q->num_rows > 0) {
            $r = $q->fetch_assoc();
            $last_no = $r['no_ujian'];
            $last = (int) substr($last_no, strlen($prefix));
        }

        $next = $last + 1;

        return $prefix . str_pad($next, 4, '0', STR_PAD_LEFT);
    }
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    $nama = trim($_POST['nama'] ?? '');
    $nama_orang_tua = trim($_POST['nama_orang_tua'] ?? '');
    $nisn = trim($_POST['nisn'] ?? '');
    $kelas = trim($_POST['kelas'] ?? '');
    $ruang_ujian = trim($_POST['ruang_ujian'] ?? '');
    $jk = trim($_POST['jenis_kelamin'] ?? '');
    $tempat_lahir = trim($_POST['tempat_lahir'] ?? '');
    $tanggal_lahir = trim($_POST['tanggal_lahir'] ?? '');
    $tahun = trim($_POST['tahun_pelajaran'] ?? '');
    $no = trim($_POST['no_ujian'] ?? '');

    if ($no === '') {
        $no = generate_no_ujian($conn);
    }

    if ($tanggal_lahir === '') {
        $tanggal_lahir = null;
    }

    $foto = 'default.png';

    if (!empty($_FILES['foto']['name'])) {
        $ext = strtolower(pathinfo($_FILES['foto']['name'], PATHINFO_EXTENSION));

        if (in_array($ext, ['jpg', 'jpeg', 'png', 'webp'])) {
            $foto = time() . '_' . preg_replace(
                '/[^a-zA-Z0-9.]/',
                '_',
                $_FILES['foto']['name']
            );

            move_uploaded_file(
                $_FILES['foto']['tmp_name'],
                '../assets/uploads/' . $foto
            );
        }
    }

    $stmt = $conn->prepare("
        INSERT INTO siswa (
            nisn,
            nama,
            nama_orang_tua,
            kelas,
            ruang_ujian,
            jenis_kelamin,
            tempat_lahir,
            tanggal_lahir,
            no_ujian,
            tahun_pelajaran,
            foto
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    ");

    $stmt->bind_param(
        'sssssssssss',
        $nisn,
        $nama,
        $nama_orang_tua,
        $kelas,
        $ruang_ujian,
        $jk,
        $tempat_lahir,
        $tanggal_lahir,
        $no,
        $tahun,
        $foto
    );

    $stmt->execute();

    header('Location: siswa.php');
    exit;
}

include 'header.php';

$contohNo = generate_no_ujian($conn);
?>

<h3 class="fw-bold mb-3">Tambah Siswa</h3>

<form method="post" enctype="multipart/form-data" class="card p-4">

    <div class="row g-3">

        <div class="col-md-6">
            <label>NISN</label>
            <input name="nisn" class="form-control">
        </div>

        <div class="col-md-6">
            <label>Nama</label>
            <input name="nama" class="form-control" required>
        </div>

        <div class="col-md-6">
            <label>Nama Orang Tua Kandung</label>
            <input name="nama_orang_tua" class="form-control" placeholder="Nama ayah/ibu kandung">
        </div>

        <div class="col-md-4">
            <label>Kelas</label>
            <input name="kelas" class="form-control" required>
        </div>

        <div class="col-md-4">
            <label>Ruang Ujian</label>
            <input
                name="ruang_ujian"
                class="form-control"
                placeholder="Contoh: Ruang 01">
        </div>

        <div class="col-md-4">
            <label>Jenis Kelamin</label>
            <select name="jenis_kelamin" class="form-select">
                <option value="Laki-laki">Laki-laki</option>
                <option value="Perempuan">Perempuan</option>
            </select>
        </div>

        <div class="col-md-4">
            <label>No Ujian</label>
            <input
                name="no_ujian"
                class="form-control"
                placeholder="Kosongkan untuk otomatis: <?= e($contohNo) ?>">
        </div>

        <div class="col-md-6">
            <label>Tempat Lahir</label>
            <input
                name="tempat_lahir"
                class="form-control"
                placeholder="Contoh: Mataram">
        </div>

        <div class="col-md-6">
            <label>Tanggal Lahir</label>
            <input
                type="date"
                name="tanggal_lahir"
                class="form-control">
        </div>

        <div class="col-md-6">
            <label>Tahun Pelajaran</label>
            <input
                name="tahun_pelajaran"
                class="form-control"
                value="<?= e($profil_header['tahun_pelajaran'] ?? '2025/2026') ?>">
        </div>

        <div class="col-md-6">
            <label>Foto</label>
            <input
                type="file"
                name="foto"
                class="form-control">
        </div>

    </div>

    <button class="btn btn-primary mt-3">
        Simpan
    </button>

</form>

<?php include 'footer.php'; ?>