<?php
// admin/jadwal_pemilihan.php
include_once 'init.php'; 

$page_title = 'Jadwal Pemilihan';
$page_icon = 'bi-calendar-event';

// =========================================================================================
// == LOGIKA TRANSISI KE PUTARAN 2 (RESET DATA)
// =========================================================================================
if (isset($_POST['action']) && $_POST['action'] === 'siapkan_putaran_2') {
    if ($id_tahun_aktif) {
        try {
            $pdo->beginTransaction();

            // 1. Ambil Top 3 Kandidat dari Putaran 1 berdasarkan suara terbanyak
            $stmt = $pdo->prepare("SELECT id_kandidat FROM kandidat WHERE id_tahun_fk = ? ORDER BY total_suara DESC LIMIT 3");
            $stmt->execute([$id_tahun_aktif]);
            $top3 = $stmt->fetchAll(PDO::FETCH_COLUMN);

            if (count($top3) > 0) {
                // 2. Reset status kelolosan semua kandidat dulu
                $pdo->prepare("UPDATE kandidat SET lolos_putaran_2 = 'tidak' WHERE id_tahun_fk = ?")->execute([$id_tahun_aktif]);

                // 3. Set 'ya' untuk Top 3
                $inQuery = implode(',', array_fill(0, count($top3), '?'));
                $pdo->prepare("UPDATE kandidat SET lolos_putaran_2 = 'ya' WHERE id_kandidat IN ($inQuery)")->execute($top3);

                // 4. Reset Total Suara Kandidat jadi 0 (Suara P1 tetap aman di tabel 'suara' karena kita sudah menambah kolom 'putaran')
                $pdo->prepare("UPDATE kandidat SET total_suara = 0 WHERE id_tahun_fk = ?")->execute([$id_tahun_aktif]);

                // 5. Reset Status Pemilih jadi 'belum' (Supaya bisa milih lagi)
                $pdo->prepare("UPDATE pemilih SET status_memilih = 'belum' WHERE id_tahun_fk = ?")->execute([$id_tahun_aktif]);

                // 6. Aktifkan Putaran 2 di Jadwal & Matikan Putaran 1
                $pdo->prepare("UPDATE tahun_pemilihan SET putaran1_status = 'tidak aktif', putaran2_status = 'aktif' WHERE id_tahun = ?")->execute([$id_tahun_aktif]);

                $pdo->commit();
                $_SESSION['pesan_sukses'] = "Berhasil! Putaran 2 telah disiapkan. Data suara di-reset, Top 3 dipilih, dan Pemilih dapat login kembali.";
            } else {
                $_SESSION['pesan_error'] = "Gagal: Belum ada data kandidat/suara untuk diseleksi.";
            }
        } catch (Exception $e) {
            $pdo->rollBack();
            $_SESSION['pesan_error'] = "Terjadi kesalahan: " . $e->getMessage();
        }
    }
    header("Location: jadwal_pemilihan.php");
    exit();
}

$pesan_sukses = $_SESSION['pesan_sukses'] ?? ''; unset($_SESSION['pesan_sukses']);
$pesan_error = $_SESSION['pesan_error'] ?? ''; unset($_SESSION['pesan_error']);

include 'header.php';
?>

<style>
    .form-select.status-aktif { background-color: #d1e7dd; border-color: #b1dfc8; color: #0f5132; }
    .form-select.status-tidak-aktif { background-color: #f8d7da; border-color: #f5c2c7; color: #842029; }
    .jadwal-card { margin-bottom: 1.5rem; }
</style>

<?php
if ($pesan_sukses) echo '<div class="alert alert-success">' . $pesan_sukses . '</div>';
if ($pesan_error) echo '<div class="alert alert-danger">' . $pesan_error . '</div>';
?>

<?php if (!$id_tahun_aktif): ?>
    <div class="alert alert-danger shadow-sm">
        <h4 class="alert-heading">Tidak Ada Tahun Aktif!</h4>
        <p>Silakan aktifkan tahun pemilihan terlebih dahulu di menu Pengaturan.</p>
    </div>
<?php else: ?>
    <form method="POST" action="pengaturan.php">
        <input type="hidden" name="action" value="update_jadwal_tahun">
        <input type="hidden" name="redirect_page" value="jadwal_pemilihan.php">
        <input type="hidden" name="id_tahun_update" value="<?= $id_tahun_aktif ?>">
        
        <div class="content-card">
            <div class="card-header-custom">
                  <span class="badge bg-info text-dark"><h6>Tahun Pemilihan : <?= htmlspecialchars($tahun_aktif_display) ?></h6></span>
            </div>
            
            <div class="card-body p-3 p-md-4">
                <div class="row">
                    <div class="col-lg-6">
                        <div class="card shadow-sm jadwal-card">
                            <div class="card-header"><h5 class="mb-0">Putaran 1 (Penyisihan)</h5></div>
                            <div class="card-body">
                                <div class="row">
                                    <div class="col-12 mb-2"><label>Nama Putaran</label><input type="text" class="form-control" name="putaran1_nama" value="<?= htmlspecialchars($tahun_aktif_data['putaran1_nama']) ?>"></div>
                                    <div class="col-md-6 mb-2"><label>Tanggal</label><input type="date" class="form-control" name="putaran1_tanggal" value="<?= htmlspecialchars($tahun_aktif_data['putaran1_tanggal']) ?>"></div>
                                    <div class="col-md-6 mb-2"><label>Pengumuman</label><input type="time" class="form-control" name="putaran1_jam_pengumuman" value="<?= htmlspecialchars($tahun_aktif_data['putaran1_jam_pengumuman'] ?? '') ?>"></div>
                                    <div class="col-md-6 mb-2"><label>Mulai</label><input type="time" class="form-control" name="putaran1_jam_mulai" value="<?= htmlspecialchars($tahun_aktif_data['putaran1_jam_mulai']) ?>"></div>
                                    <div class="col-md-6 mb-2"><label>Selesai</label><input type="time" class="form-control" name="putaran1_jam_selesai" value="<?= htmlspecialchars($tahun_aktif_data['putaran1_jam_selesai']) ?>"></div>
                                    <div class="col-12"><label>Status</label>
                                        <select class="form-select status-select" name="putaran1_status">
                                            <option value="aktif" <?= $tahun_aktif_data['putaran1_status'] == 'aktif' ? 'selected' : '' ?>>Aktif</option>
                                            <option value="tidak aktif" <?= $tahun_aktif_data['putaran1_status'] == 'tidak aktif' ? 'selected' : '' ?>>Tidak Aktif</option>
                                        </select>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <div class="col-lg-6">
                        <div class="card shadow-sm jadwal-card">
                            <div class="card-header"><h5 class="mb-0">Putaran 2 (Final)</h5></div>
                            <div class="card-body">
                                <div class="row">
                                    <div class="col-12 mb-2"><label>Nama Putaran</label><input type="text" class="form-control" name="putaran2_nama" value="<?= htmlspecialchars($tahun_aktif_data['putaran2_nama']) ?>"></div>
                                    <div class="col-md-6 mb-2"><label>Tanggal</label><input type="date" class="form-control" name="putaran2_tanggal" value="<?= htmlspecialchars($tahun_aktif_data['putaran2_tanggal']) ?>"></div>
                                    <div class="col-md-6 mb-2"><label>Pengumuman</label><input type="time" class="form-control" name="putaran2_jam_pengumuman" value="<?= htmlspecialchars($tahun_aktif_data['putaran2_jam_pengumuman'] ?? '') ?>"></div>
                                    <div class="col-md-6 mb-2"><label>Mulai</label><input type="time" class="form-control" name="putaran2_jam_mulai" value="<?= htmlspecialchars($tahun_aktif_data['putaran2_jam_mulai']) ?>"></div>
                                    <div class="col-md-6 mb-2"><label>Selesai</label><input type="time" class="form-control" name="putaran2_jam_selesai" value="<?= htmlspecialchars($tahun_aktif_data['putaran2_jam_selesai']) ?>"></div>
                                    <div class="col-12"><label>Status</label>
                                        <select class="form-select status-select" name="putaran2_status">
                                            <option value="aktif" <?= $tahun_aktif_data['putaran2_status'] == 'aktif' ? 'selected' : '' ?>>Aktif</option>
                                            <option value="tidak aktif" <?= $tahun_aktif_data['putaran2_status'] == 'tidak aktif' ? 'selected' : '' ?>>Tidak Aktif</option>
                                        </select>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                
                <div class="text-end mt-2">
                    <button type="submit" class="btn btn-primary"><i class="bi bi-save-fill"></i> Simpan Jadwal</button>
                </div>
            </div>
        </div>
    </form>

    <?php if ($tahun_aktif_data['putaran1_status'] == 'aktif' || ($tahun_aktif_data['putaran1_status'] == 'tidak aktif' && $tahun_aktif_data['putaran2_status'] == 'tidak aktif')): ?>
    <div class="card shadow-sm border-warning mt-4">
        <div class="card-header bg-warning text-dark">
            <h5 class="mb-0"><i class="bi bi-shuffle"></i> Transisi ke Putaran 2</h5>
        </div>
        <div class="card-body">
            <p class="mb-2">Gunakan tombol di bawah ini <b>HANYA JIKA</b> Putaran 1 telah selesai. Sistem akan otomatis:</p>
            <ul class="small text-muted mb-3">
                <li>Memilih 3 Kandidat dengan suara terbanyak dari Putaran 1.</li>
                <li>Mereset perolehan suara menjadi 0 (voting dimulai dari awal).</li>
                <li>Mereset status semua pemilih menjadi "Belum Memilih".</li>
                <li>Mengaktifkan jadwal Putaran 2.</li>
            </ul>
            <form method="POST" action="jadwal_pemilihan.php" onsubmit="return confirm('PERINGATAN KERAS:\nApakah Anda yakin ingin mereset data untuk Putaran 2?\n\nSuara Putaran 1 akan diarsipkan dan pemilih harus memilih ulang. Tindakan ini tidak dapat dibatalkan!');">
                <input type="hidden" name="action" value="siapkan_putaran_2">
                <button type="submit" class="btn btn-danger w-100">
                    <i class="bi bi-exclamation-triangle-fill"></i> PROSES RESET & SIAPKAN PUTARAN 2
                </button>
            </form>
        </div>
    </div>
    <?php endif; ?>

<?php endif; ?>

<script>
document.addEventListener("DOMContentLoaded", function() {
    function updateStatusColor(selectElement) {
        selectElement.classList.remove('status-aktif', 'status-tidak-aktif');
        if (selectElement.value === 'aktif') selectElement.classList.add('status-aktif');
        else selectElement.classList.add('status-tidak-aktif');
    }
    document.querySelectorAll('.status-select').forEach(function(select) {
        updateStatusColor(select);
        select.addEventListener('change', function() { updateStatusColor(this); });
    });
});
</script>

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