<?php
require_once '../includes/header.php';
require_once '../includes/navbar.php';

// Include PhpSpreadsheet
require_once '../vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Shared\Date;

// Fungsi untuk mendapatkan tahun ajaran aktif
function getTahunAjaranAktif($conn) {
    $query = "SELECT id_tahunajaran, tahun_ajaran FROM bind_tahunajaran WHERE aktif = 1 LIMIT 1";
    $result = mysqli_query($conn, $query);
    return mysqli_fetch_assoc($result);
}

// Proses import data
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['file_excel'])) {
    $tahun_aktif = getTahunAjaranAktif($conn);
    $id_tahunajaran = $tahun_aktif['id_tahunajaran'];
    
    $file_name = $_FILES['file_excel']['name'];
    $file_tmp = $_FILES['file_excel']['tmp_name'];
    $file_ext = strtolower(pathinfo($file_name, PATHINFO_EXTENSION));
    
    // Validasi ekstensi file
    $allowed_ext = ['xls', 'xlsx', 'csv'];
    if (!in_array($file_ext, $allowed_ext)) {
        $error = "Format file tidak didukung. Silakan upload file Excel (xls, xlsx) atau CSV.";
    } else {
        try {
            // Load file Excel
            $spreadsheet = IOFactory::load($file_tmp);
            $worksheet = $spreadsheet->getActiveSheet();
            $rows = $worksheet->toArray();
            
            // Hapus header (baris pertama)
            array_shift($rows);
            
            $success_count = 0;
            $error_messages = [];
            
            // Proses setiap baris data
            foreach ($rows as $index => $row) {
                $row_number = $index + 2; // +2 karena header dihapus dan Excel mulai dari 1
                
                // Skip baris kosong
                if (empty(array_filter($row))) {
                    continue;
                }
                
                // Lewati kolom No. (indeks 0) dan sesuaikan indeks lainnya
                $nisn = isset($row[1]) ? mysqli_real_escape_string($conn, $row[1]) : '';
                $nis = isset($row[2]) ? mysqli_real_escape_string($conn, $row[2]) : '';
                $nama_lengkap = isset($row[3]) ? mysqli_real_escape_string($conn, $row[3]) : '';
                
                // Validasi data minimal
                if (empty($nisn) || empty($nis) || empty($nama_lengkap)) {
                    $error_messages[] = "Baris $row_number: NISN, NIS, dan Nama Lengkap wajib diisi";
                    continue;
                }
                
                // Siapkan data (indeks disesuaikan karena ada kolom No. di depan)
                $nama_panggilan = isset($row[4]) ? mysqli_real_escape_string($conn, $row[4]) : '';
                $jenis_kelamin = isset($row[5]) ? mysqli_real_escape_string($conn, strtoupper($row[5])) : '';
                $tempat_lahir = isset($row[6]) ? mysqli_real_escape_string($conn, $row[6]) : '';
                
                // Format tanggal lahir
                $tanggal_lahir = null;
                if (isset($row[7]) && !empty($row[7])) {
                    if (is_numeric($row[7])) {
                        // Jika nilai Excel adalah angka (format date Excel)
                        $tanggal_lahir = Date::excelToDateTimeObject($row[7])->format('Y-m-d');
                    } else {
                        // Jika berupa string tanggal
                        $tanggal_lahir = date('Y-m-d', strtotime($row[7]));
                    }
                }
                
                $agama = isset($row[8]) ? mysqli_real_escape_string($conn, $row[8]) : '';
                $kewarganegaraan = isset($row[9]) ? mysqli_real_escape_string($conn, $row[9]) : 'Indonesia';
                $anak_ke = isset($row[10]) ? intval($row[10]) : 1;
                $jumlah_saudara_kandung = isset($row[11]) ? intval($row[11]) : 0;
                $jumlah_saudara_tiri = isset($row[12]) ? intval($row[12]) : 0;
                $jumlah_saudara_angkat = isset($row[13]) ? intval($row[13]) : 0;
                $status_anak = isset($row[14]) ? mysqli_real_escape_string($conn, $row[14]) : 'Kandung';
                $bahasa_sehari_hari = isset($row[15]) ? mysqli_real_escape_string($conn, $row[15]) : 'Indonesia';
                $alamat = isset($row[16]) ? mysqli_real_escape_string($conn, $row[16]) : '';
                $no_hp = isset($row[17]) ? mysqli_real_escape_string($conn, $row[17]) : '';
                $tinggal_dengan = isset($row[18]) ? mysqli_real_escape_string($conn, $row[18]) : 'Orang Tua';
                $jarak_ke_sekolah = isset($row[19]) ? mysqli_real_escape_string($conn, $row[19]) : '';
                $golongan_darah = isset($row[20]) ? mysqli_real_escape_string($conn, $row[20]) : '';
                $riwayat_penyakit = isset($row[21]) ? mysqli_real_escape_string($conn, $row[21]) : '';
                $kelainan_jasmani = isset($row[22]) ? mysqli_real_escape_string($conn, $row[22]) : '';
                $tinggi_cm = isset($row[23]) ? intval($row[23]) : 0;
                $berat_kg = isset($row[24]) ? floatval($row[24]) : 0;
                
                // Format tanggal diterima
                $tanggal_diterima = date('Y-m-d');
                if (isset($row[25]) && !empty($row[25])) {
                    if (is_numeric($row[25])) {
                        $tanggal_diterima = Date::excelToDateTimeObject($row[25])->format('Y-m-d');
                    } else {
                        $tanggal_diterima = date('Y-m-d', strtotime($row[25]));
                    }
                }
                
                // Validasi data unik
                $check_nisn = mysqli_query($conn, "SELECT id_siswa FROM bind_siswa WHERE nisn = '$nisn'");
                if (mysqli_num_rows($check_nisn) > 0) {
                    $error_messages[] = "Baris $row_number: NISN $nisn sudah terdaftar";
                    continue;
                }
                
                $check_nis = mysqli_query($conn, "SELECT id_siswa FROM bind_siswa WHERE nis = '$nis'");
                if (mysqli_num_rows($check_nis) > 0) {
                    $error_messages[] = "Baris $row_number: NIS $nis sudah terdaftar";
                    continue;
                }
                
                // Query insert
               // Dalam bagian proses import, ubah query insert:
                $sql = "INSERT INTO bind_siswa (
                    nisn, nis, nama_lengkap, nama_panggilan, jenis_kelamin, 
                    tempat_lahir, tanggal_lahir, agama, kewarganegaraan, anak_ke, jumlah_saudara_kandung, 
                    jumlah_saudara_tiri, jumlah_saudara_angkat, status_anak, bahasa_sehari_hari, alamat, no_hp, 
                    tinggal_dengan, jarak_ke_sekolah, golongan_darah, riwayat_penyakit, kelainan_jasmani, 
                    tinggi_cm, berat_kg, tanggal_diterima
                ) VALUES (
                    '$nisn', '$nis', '$nama_lengkap', '$nama_panggilan', '$jenis_kelamin',
                    '$tempat_lahir', '$tanggal_lahir', '$agama', '$kewarganegaraan', $anak_ke, $jumlah_saudara_kandung,
                    $jumlah_saudara_tiri, $jumlah_saudara_angkat, '$status_anak', '$bahasa_sehari_hari', '$alamat', '$no_hp',
                    '$tinggal_dengan', '$jarak_ke_sekolah', '$golongan_darah', '$riwayat_penyakit', '$kelainan_jasmani',
                    $tinggi_cm, $berat_kg, '$tanggal_diterima'
                )";

                if (mysqli_query($conn, $sql)) {
                    $last_id = mysqli_insert_id($conn);
                    
                    // Insert ke bind_datasiswa
                    $sql_datasiswa = "INSERT INTO bind_datasiswa (id_tahunajaran, id_siswa, status) 
                                    VALUES ('$id_tahunajaran', '$last_id', 'Aktif')";
                    mysqli_query($conn, $sql_datasiswa);
                    
                    $success_count++;
                } else {
                    $error_messages[] = "Baris $row_number: " . mysqli_error($conn);
                }
            }
            
            // Tampilkan hasil import
            if ($success_count > 0) {
                $success_message = "Berhasil mengimport $success_count data siswa.";
            }
            
            if (!empty($error_messages)) {
                $error = "Terjadi beberapa kesalahan:<br>" . implode("<br>", $error_messages);
            }
            
        } catch (Exception $e) {
            $error = "Error membaca file: " . $e->getMessage();
        }
    }
}
?>

<div class="container mt-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h2><i class="fas fa-file-import me-2"></i>Import Data Siswa</h2>
        <a href="index.php" class="btn btn-secondary">
            <i class="fas fa-arrow-left me-1"></i> Kembali
        </a>
    </div>
    
    <div class="card border-0 shadow-lg">
        <div class="card-header bg-primary text-white py-3">
            <h5 class="card-title mb-0"><i class="fas fa-upload me-2"></i>Import dari Excel</h5>
        </div>
        <div class="card-body p-4">
            <?php if (isset($error)): ?>
            <div class="alert alert-danger">
                <i class="fas fa-exclamation-circle me-2"></i><?php echo $error; ?>
            </div>
            <?php endif; ?>
            
            <?php if (isset($success_message)): ?>
            <div class="alert alert-success">
                <i class="fas fa-check-circle me-2"></i><?php echo $success_message; ?>
            </div>
            <?php endif; ?>
            
            <div class="alert alert-info">
                <h5><i class="fas fa-info-circle me-2"></i>Panduan Import</h5>
                <ol class="mb-0">
                    <li>Download template Excel untuk memudahkan import data</li>
                    <li>Isi data sesuai dengan kolom yang tersedia</li>
                    <li>Upload file Excel yang telah diisi</li>
                    <li>Data akan divalidasi sebelum disimpan</li>
                </ol>
            </div>
            
            <div class="row">
                <div class="col-md-6">
                    <div class="card mb-4">
                        <div class="card-header bg-light">
                            <h6 class="mb-0">Download Template</h6>
                        </div>
                        <div class="card-body text-center">
                            <p>Download template Excel untuk mengisi data siswa</p>
                            <a href="download_template.php" class="btn btn-success">
                                <i class="fas fa-download me-1"></i> Download Template
                            </a>
                        </div>
                    </div>
                </div>
                
                <div class="col-md-6">
                    <div class="card">
                        <div class="card-header bg-light">
                            <h6 class="mb-0">Upload File Excel</h6>
                        </div>
                        <div class="card-body">
                            <form method="POST" enctype="multipart/form-data">
                                <div class="mb-3">
                                    <label for="file_excel" class="form-label">Pilih File Excel</label>
                                    <input type="file" class="form-control" id="file_excel" name="file_excel" accept=".xls,.xlsx,.csv" required>
                                    <div class="form-text">Format file: Excel (.xls, .xlsx) atau CSV</div>
                                </div>
                                <button type="submit" class="btn btn-primary">
                                    <i class="fas fa-upload me-1"></i> Import Data
                                </button>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
            
            <div class="mt-4">
                <h5>Format Kolom Excel</h5>
                <div class="table-responsive">
                    <table class="table table-bordered">
                        <thead class="table-light">
                            <tr>
                                <th width="30">No</th>
                                <th>Kolom</th>
                                <th>Deskripsi</th>
                                <th>Contoh</th>
                                <th>Wajib</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>1</td>
                                <td>No.</td>
                                <td>Nomor urut (otomatis)</td>
                                <td>1, 2, 3, ...</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>2</td>
                                <td>NISN</td>
                                <td>Nomor Induk Siswa Nasional</td>
                                <td>1234567890</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>3</td>
                                <td>NIS</td>
                                <td>Nomor Induk Siswa</td>
                                <td>2023001</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>4</td>
                                <td>Nama Lengkap</td>
                                <td>Nama lengkap siswa</td>
                                <td>Ahmad Sutisna</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>5</td>
                                <td>Nama Panggilan</td>
                                <td>Nama panggilan siswa</td>
                                <td>Ahmad</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>6</td>
                                <td>Jenis Kelamin</td>
                                <td>L atau P</td>
                                <td>L</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>7</td>
                                <td>Tempat Lahir</td>
                                <td>Tempat kelahiran siswa</td>
                                <td>Jakarta</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>8</td>
                                <td>Tanggal Lahir</td>
                                <td>Tanggal lahir (format tanggal Excel atau teks)</td>
                                <td>2005-05-15</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>9</td>
                                <td>Agama</td>
                                <td>Agama siswa</td>
                                <td>Islam</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>10</td>
                                <td>Kewarganegaraan</td>
                                <td>Kewarganegaraan siswa</td>
                                <td>Indonesia</td>
                                <td>Ya</td>
                                </tr>
                            <tr>
                            <tr>
                            <td>11</td>
                                <td>Anak Ke</td>
                                <td>Anak keberapa di rumah</td>
                                <td>1 atau 2 dll</td>
                                <td>Ya</td>
                            </tr>

                            <tr>
                                <td>12</td>
                                <td>Jumlah Saudara Kandung</td>
                                <td>Jumlah Saudara Kandung</td>
                                <td>1 atau 2 dll</td>
                                <td>Ya</td>
                            </tr>

                            <tr>
                                <td>13</td>
                                <td>Jumlah Saudara Tiri	</td>
                                <td>Jumlah Saudara Tiri</td>
                                <td>1 atau 2 dll</td>
                                <td>Ya</td>
                            </tr>

                            <tr>
                                <td>14</td>
                                <td>Jumlah Saudara Angkat</td>
                                <td>Jumlah Saudara Angkat</td>
                                <td>1 atau 2 dll</td>
                                <td>Ya</td>
                            </tr>

                            <tr>
                                <td>15</td>
                                <td>Jumlah Saudara Angkat</td>
                                <td>Jumlah Saudara Angkat</td>
                                <td>1 atau 2 dll</td>
                                <td>Ya</td>
                            </tr>

                            <tr>
                                <td>16</td>
                                <td>Status Anak</td>
                                <td>Status Anak dalam keluarga</td>
                                <td>Kandung/Tiri</td>
                                <td>Ya</td>
                            </tr>

                            <tr>
                                <td>17</td>
                                <td>Bahasa Sehari Hari/td>
                                <td>Bahasa Sehari Hari di rumah</td>
                                <td>Indonesia/Jawa/Madura</td>
                                <td>Ya</td>
                            </tr>

                            <tr>
                                <td>18</td>
                                <td>Alamat/td>
                                <td>Alamat Rumah/td>
                                <td>Jl. Mastrip No. 53 Probolinggo</td>
                                <td>Ya</td>
                            </tr>

                            <tr>
                                <td>19</td>
                                <td>No. HP</td>
                                <td>Nomor Handphone</td>
                                <td>081234567890</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>20</td>
                                <td>Tinggal Dengan</td>
                                <td>Orang Tua/Wali</td>
                                <td>Orang Tua</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>21</td>
                                <td>Jarak Ke Sekolah</td>
                                <td>Perkiraan Jarak (Km)</td>
                                <td>5 Km</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>22</td>
                                <td>Golongan Darah</td>
                                <td>Golongan Darah</td>
                                <td>O</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>23</td>
                                <td>Riwayat Penyakit</td>
                                <td>Penyakit yang Pernah Diderita</td>
                                <td>Tidak Ada</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>24</td>
                                <td>Kelainan Jasmani</td>
                                <td>Kondisi Fisik</td>
                                <td>Tidak Ada</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>25</td>
                                <td>Tinggi (cm)</td>
                                <td>Tinggi Badan</td>
                                <td>165</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>26</td>
                                <td>Berat (Kg)</td>
                                <td>Berat Badan</td>
                                <td>55</td>
                                <td>Ya</td>
                            </tr>
                            <tr>
                                <td>27</td>
                                <td>Tanggal Diterima</td>
                                <td>Tanggal Masuk Sekolah</td>
                                <td>15 Juli 2022</td>
                                <td>Ya</td>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>

<?php
require_once '../includes/footer.php';
?>