<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once "../db.php";

/* ================= ADMIN AUTH ================= */
if (!isset($_SESSION['admin'])) {
    header("Location: admin_login.php");
    exit;
}

/* ================= AJAX UPDATE ================= */
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['ajax'] === 'update') {
    header('Content-Type: application/json');

    $id     = (int)($_POST['id'] ?? 0);
    $status = $_POST['status'] ?? '';

    if (!$id || !in_array($status,['pending','sent','approved','failed'])) {
        echo json_encode(['success'=>false,'message'=>'Invalid data']);
        exit;
    }

    $dir = __DIR__ . "/../uploads/slips/";
    if (!is_dir($dir)) mkdir($dir,0777,true);

    $trackingSlip = null;
    $ninSlip = null;

    if (!empty($_FILES['tracking_slip']['tmp_name']) &&
        mime_content_type($_FILES['tracking_slip']['tmp_name']) === 'application/pdf') {
        $trackingSlip = uniqid("TRACK_").".pdf";
        move_uploaded_file($_FILES['tracking_slip']['tmp_name'], $dir.$trackingSlip);
    }

    if (!empty($_FILES['nin_slip']['tmp_name']) &&
        mime_content_type($_FILES['nin_slip']['tmp_name']) === 'application/pdf') {
        $ninSlip = uniqid("NIN_").".pdf";
        move_uploaded_file($_FILES['nin_slip']['tmp_name'], $dir.$ninSlip);
    }

    $stmt = $conn->prepare("
        UPDATE enrolment_requests SET
            status = ?,
            tracking_slip = COALESCE(?, tracking_slip),
            nin_slip = COALESCE(?, nin_slip)
        WHERE id = ?
    ");
    $stmt->bind_param("sssi",$status,$trackingSlip,$ninSlip,$id);
    $stmt->execute();
    $stmt->close();

    echo json_encode([
        'success'=>true,
        'status'=>$status,
        'tracking_slip'=>$trackingSlip,
        'nin_slip'=>$ninSlip
    ]);
    exit;
}

/* ================= STATUS COUNTS ================= */
$counts = ['pending'=>0,'sent'=>0,'approved'=>0,'failed'=>0];
$cq = $conn->query("SELECT status, COUNT(*) c FROM enrolment_requests GROUP BY status");
while($r=$cq->fetch_assoc()){
    $counts[$r['status']] = (int)$r['c'];
}

/* ================= FETCH REQUESTS ================= */
$req = $conn->query("SELECT * FROM enrolment_requests ORDER BY id DESC");
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Admin – Enrolment Management</title>
<meta name="viewport" content="width=device-width,initial-scale=1">

<style>
body{font-family:Arial;background:#f8fafc;padding:20px}
h2{margin-bottom:15px}

.stats{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
    gap:15px;
    margin-bottom:20px
}
.stat-box{
    background:#fff;
    border-radius:14px;
    padding:16px;
    font-weight:700;
    box-shadow:0 6px 20px rgba(0,0,0,.08)
}
.stat-box span{font-size:28px;display:block;margin-top:6px}
.pending-box{border-left:6px solid #f59e0b}
.sent-box{border-left:6px solid #22c55e}
.approved-box{border-left:6px solid #2563eb}
.failed-box{border-left:6px solid #dc2626}

table{width:100%;border-collapse:collapse}
th,td{padding:10px;border-bottom:1px solid #ddd;vertical-align:top}
th{background:#16a34a;color:#fff}

.badge{padding:4px 10px;border-radius:999px;color:#fff;font-size:12px}
.pending{background:#f59e0b}
.sent{background:#22c55e}
.approved{background:#2563eb}
.failed{background:#dc2626}

button{padding:6px 10px;background:#2563eb;color:#fff;border:none;border-radius:6px;cursor:pointer}

.details{
    display:none;
    background:#f1f5f9;
    padding:10px;
    border-radius:10px;
    margin-top:8px
}
.details.show{display:block}

.photo-thumb{
    width:70px;height:70px;object-fit:cover;
    border-radius:8px;border:2px solid #16a34a;
    cursor:pointer;margin:4px
}

/* MODAL */
.modal{
    display:none;
    position:fixed;
    inset:0;
    background:rgba(0,0,0,.8);
    justify-content:center;
    align-items:center;
    z-index:9999
}
.modal img{max-width:90%;max-height:90%;background:#fff;border-radius:12px}
</style>
</head>
<body>

<div id="imgModal" class="modal" onclick="closeModal()">
    <img id="modalImg">
</div>

<h2>📋 Enrolment Requests</h2>

<div class="stats">
    <div class="stat-box pending-box">Pending<span><?= $counts['pending'] ?></span></div>
    <div class="stat-box sent-box">Sent<span><?= $counts['sent'] ?></span></div>
    <div class="stat-box approved-box">Approved<span><?= $counts['approved'] ?></span></div>
    <div class="stat-box failed-box">Failed<span><?= $counts['failed'] ?></span></div>
</div>

<table>
<tr> 
<th>Id</th>
<th>User</th>
<th>Type</th>
<th>Status</th>
<th>Details</th>
<th>Tracking</th>
<th>NIN</th>
<th>Action</th>
</tr>

<?php while($r=$req->fetch_assoc()):
$form=json_decode($r['form_data'],true) ?: [];
$imgBase="../uploads/enrolment/";
?>
<tr>
<td><?= htmlspecialchars($r['user']) ?></td>
<td><?= strtoupper($r['type']) ?></td>

<td>
<span id="status<?= $r['id'] ?>" class="badge <?= $r['status'] ?>">
<?= ucfirst($r['status']) ?>
</span>
</td>

<td>
<button type="button" class="btn-view" data-id="<?= $r['id'] ?>">View</button>
<div class="details" id="details<?= $r['id'] ?>">
<?php foreach($form as $k=>$v): ?>
<div><b><?= htmlspecialchars($k) ?>:</b> <?= htmlspecialchars($v) ?></div>
<?php endforeach; ?>
<hr>
<?php foreach(['photo','fingerprint_right','fingerprint_left','fingerprint_thumbs'] as $img):
if(!empty($r[$img]) && file_exists(__DIR__."/../uploads/enrolment/".$r[$img])): ?>
<img src="<?= $imgBase.$r[$img] ?>" class="photo-thumb"
onclick="viewImage('<?= $imgBase.$r[$img] ?>')">
<?php endif; endforeach; ?>
</div>
</td>

<td id="track<?= $r['id'] ?>">
<?= $r['tracking_slip'] ? "<a href='../uploads/slips/{$r['tracking_slip']}' target='_blank'>Download</a>" : "—" ?>
</td>

<td id="nin<?= $r['id'] ?>">
<?= $r['nin_slip'] ? "<a href='../uploads/slips/{$r['nin_slip']}' target='_blank'>Download</a>" : "—" ?>
</td>

<td>
<form class="updateForm" data-id="<?= $r['id'] ?>" enctype="multipart/form-data">
<select name="status">
<?php foreach(['pending','sent','approved','failed'] as $s): ?>
<option value="<?= $s ?>" <?= $r['status']===$s?'selected':'' ?>><?= $s ?></option>
<?php endforeach; ?>
</select><br><br>
<input type="file" name="tracking_slip" accept="application/pdf"><br>
<input type="file" name="nin_slip" accept="application/pdf"><br><br>
<button type="submit">Update</button>
</form>
</td>
</tr>
<?php endwhile; ?>
</table>

<script>
/* ===== VIEW DETAILS ===== */
document.querySelectorAll('.btn-view').forEach(btn=>{
    btn.addEventListener('click',()=>{
        document.getElementById('details'+btn.dataset.id).classList.toggle('show');
    });
});

/* ===== IMAGE MODAL ===== */
function viewImage(src){
    document.getElementById('modalImg').src = src;
    document.getElementById('imgModal').style.display = 'flex';
}
function closeModal(){
    document.getElementById('imgModal').style.display = 'none';
}

/* ===== AJAX UPDATE ===== */
document.querySelectorAll('.updateForm').forEach(form=>{
    form.addEventListener('submit',e=>{
        e.preventDefault();
        const id=form.dataset.id;
        const fd=new FormData(form);
        fd.append('ajax','update');
        fd.append('id',id);

        fetch('admin_enrolment_requests.php',{method:'POST',body:fd})
        .then(r=>r.json())
        .then(d=>{
            if(!d.success){ alert('Update failed'); return; }

            const badge=document.getElementById('status'+id);
            badge.className='badge '+d.status;
            badge.innerText=d.status.charAt(0).toUpperCase()+d.status.slice(1);

            if(d.tracking_slip){
                document.getElementById('track'+id).innerHTML =
                `<a href="../uploads/slips/${d.tracking_slip}" target="_blank">Download</a>`;
            }
            if(d.nin_slip){
                document.getElementById('nin'+id).innerHTML =
                `<a href="../uploads/slips/${d.nin_slip}" target="_blank">Download</a>`;
            }
        })
        .catch(()=>alert('Network error'));
    });
});
</script>

</body>
</html>