<?php
/**
 * IBVTE Admin – Course Management (Full CRUD)
 * Hierarchical: Categories -> Sub-Categories -> Courses
 */
require_once __DIR__ . '/../config.php';
require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/auth.php';
if (!checkDBConnection()) exit;
Auth()->requireRole(['super_admin', 'admin']);

$db   = DB();
$user = Auth()->getUser();
$flash = getFlashMessage();
$tab  = $_GET['tab'] ?? 'categories';

// Helper: auto course code
function genCourseCode($db, $name) {
    $prefix = strtoupper(substr(preg_replace('/[^A-Za-z]/', '', $name), 0, 4));
    if(strlen($prefix) < 4) $prefix = str_pad($prefix, 4, 'X');
    $seq = $db->fetchColumn("SELECT COUNT(*)+1 FROM courses");
    return $prefix . str_pad($seq, 3, '0', STR_PAD_LEFT);
}

// Ensure upload dirs exist
$dirs = ['categories', 'courses', 'syllabus'];
foreach ($dirs as $d) {
    if (!is_dir("../assets/images/$d")) @mkdir("../assets/images/$d", 0755, true);
}
if (!is_dir("../assets/uploads/syllabus")) @mkdir("../assets/uploads/syllabus", 0755, true);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (!Auth()->verifyCSRFToken($_POST['csrf_token'] ?? '')) {
        redirectWithMessage('courses.php?tab='.$tab, 'Security session expired. Please try again.', 'danger');
    }
    $action = $_POST['action'] ?? '';

    // --- CATEGORY CRUD ---
    if ($action === 'save_category') {
        $id = intval($_POST['id'] ?? 0);
        $imagePath = $id ? $db->fetchColumn("SELECT image FROM course_categories WHERE id=?", [$id]) : null;
        if (isset($_FILES['category_image']) && $_FILES['category_image']['error'] === UPLOAD_ERR_OK) {
            $ext = pathinfo($_FILES['category_image']['name'], PATHINFO_EXTENSION);
            $fileName = 'cat_' . time() . '_' . rand(100, 999) . '.' . $ext;
            if (move_uploaded_file($_FILES['category_image']['tmp_name'], '../assets/images/categories/' . $fileName)) {
                $imagePath = 'assets/images/categories/' . $fileName;
            }
        }
        $data = [
            'name'          => trim($_POST['name']),
            'slug'          => strtolower(preg_replace('/[^a-z0-9]/i','-',trim($_POST['name']))),
            'description'   => trim($_POST['description'] ?? ''),
            'display_order' => intval($_POST['display_order'] ?? 0),
            'is_active'     => intval($_POST['is_active'] ?? 1),
            'image'         => $imagePath
        ];
        if ($id) $db->update('course_categories', $data, ['id' => $id]);
        else     $db->insert('course_categories', $data);
        redirectWithMessage('courses.php?tab=categories', 'Category saved successfully.', 'success');
    }
    if ($action === 'delete_category') {
        $db->delete('course_categories', ['id' => intval($_POST['id'])]);
        redirectWithMessage('courses.php?tab=categories', 'Category deleted.', 'success');
    }

    // --- SUB-CATEGORY CRUD ---
    if ($action === 'save_sub_category') {
        $id = intval($_POST['id'] ?? 0);
        $imagePath = $id ? $db->fetchColumn("SELECT image FROM course_sub_categories WHERE id=?", [$id]) : null;
        if (isset($_FILES['sub_category_image']) && $_FILES['sub_category_image']['error'] === UPLOAD_ERR_OK) {
            $ext = pathinfo($_FILES['sub_category_image']['name'], PATHINFO_EXTENSION);
            $fileName = 'subcat_' . time() . '_' . rand(100, 999) . '.' . $ext;
            if (move_uploaded_file($_FILES['sub_category_image']['tmp_name'], '../assets/images/categories/' . $fileName)) {
                $imagePath = 'assets/images/categories/' . $fileName;
            }
        }
        $data = [
            'category_id'   => intval($_POST['category_id']),
            'name'          => trim($_POST['name']),
            'slug'          => strtolower(preg_replace('/[^a-z0-9]/i','-',trim($_POST['name']))),
            'description'   => trim($_POST['description'] ?? ''),
            'display_order' => intval($_POST['display_order'] ?? 0),
            'is_active'     => intval($_POST['is_active'] ?? 1),
            'image'         => $imagePath
        ];
        if ($id) $db->update('course_sub_categories', $data, ['id' => $id]);
        else     $db->insert('course_sub_categories', $data);
        redirectWithMessage('courses.php?tab=sub_categories', 'Sub-Category saved successfully.', 'success');
    }
    if ($action === 'delete_sub_category') {
        $db->delete('course_sub_categories', ['id' => intval($_POST['id'])]);
        redirectWithMessage('courses.php?tab=sub_categories', 'Sub-Category deleted.', 'success');
    }

    // --- COURSE CRUD ---
    if ($action === 'save_course') {
        $id = intval($_POST['id'] ?? 0);

        $durY = intval($_POST['dur_years'] ?? 0);
        $durM = intval($_POST['dur_months'] ?? 0);
        $totalMonths = ($durY * 12) + $durM;
        $durVal = $durY + ($durM / 12);
        
        $durParts = [];
        if ($durY > 0) $durParts[] = $durY . ($durY == 1 ? ' Year' : ' Years');
        if ($durM > 0) $durParts[] = $durM . ($durM == 1 ? ' Month' : ' Months');
        $durText = !empty($durParts) ? implode(' ', $durParts) : '0 Months';

        $imagePath = $id ? $db->fetchColumn("SELECT image FROM courses WHERE id=?", [$id]) : null;
        if (isset($_FILES['course_image']) && $_FILES['course_image']['error'] === UPLOAD_ERR_OK) {
            $ext = pathinfo($_FILES['course_image']['name'], PATHINFO_EXTENSION);
            $fileName = 'course_' . time() . '_' . rand(100, 999) . '.' . $ext;
            if (move_uploaded_file($_FILES['course_image']['tmp_name'], '../assets/images/courses/' . $fileName)) {
                $imagePath = 'assets/images/courses/' . $fileName;
            }
        }
        
        $pdfPath = $id ? $db->fetchColumn("SELECT syllabus_pdf FROM courses WHERE id=?", [$id]) : null;
        if (isset($_FILES['syllabus_pdf']) && $_FILES['syllabus_pdf']['error'] === UPLOAD_ERR_OK) {
            $ext = pathinfo($_FILES['syllabus_pdf']['name'], PATHINFO_EXTENSION);
            $fileName = 'syllabus_' . time() . '_' . rand(100, 999) . '.' . $ext;
            if (move_uploaded_file($_FILES['syllabus_pdf']['tmp_name'], '../assets/uploads/syllabus/' . $fileName)) {
                $pdfPath = 'assets/uploads/syllabus/' . $fileName;
            }
        }

        $code = $id ? trim($_POST['course_code']) : genCourseCode($db, $_POST['course_name']);

        $data = [
            'category_id'             => intval($_POST['category_id']),
            'sub_category_id'         => intval($_POST['sub_category_id']),
            'course_type'             => trim($_POST['course_type']),
            'course_name'             => trim($_POST['course_name']),
            'course_code'             => $code,
            'short_name'              => trim($_POST['short_name'] ?? ''),
            'eligibility'             => trim($_POST['eligibility'] ?? ''),
            'duration_text'           => $durText,
            'duration_months'         => $totalMonths,
            'duration_value'          => $durVal,
            'dur_years'               => $durY,
            'dur_months'              => $durM,
            'mode'                    => $_POST['mode'] ?? 'offline',
            'assessment_pass_percent' => floatval($_POST['assessment'] ?? 50),
            'description'             => trim($_POST['description'] ?? ''),
            'syllabus_text'           => $_POST['syllabus_text'] ?? '',
            'syllabus_pdf'            => $pdfPath,
            'is_active'               => intval($_POST['is_active'] ?? 1),
            'display_order'           => intval($_POST['display_order'] ?? 0),
            'image'                   => $imagePath
        ];

        if ($id) $db->update('courses', $data, ['id' => $id]);
        else {
            $db->insert('courses', $data);
            $id = $db->lastInsertId();
        }

        $admFee  = floatval($_POST['fee_admission'] ?? 0);
        $examFee = floatval($_POST['fee_exam'] ?? 0);
        $certFee = floatval($_POST['fee_cert'] ?? 0);
        $total   = $admFee + $examFee + $certFee;

        $existingFee = $db->fetchOne("SELECT id FROM course_fees WHERE course_id=? AND user_type='college'", [$id]);
        $feeData = [
            'admission_fee' => $admFee, 'exam_fee' => $examFee,
            'certificate_fee' => $certFee, 'total_fee' => $total,
            'valid_from' => date('Y-m-d'),
        ];
        if ($existingFee) $db->update('course_fees', $feeData, ['id' => $existingFee['id']]);
        else $db->insert('course_fees', array_merge($feeData, ['course_id'=>$id,'user_type'=>'college']));

        redirectWithMessage('courses.php?tab=courses', 'Course saved successfully.', 'success');
    }
    if ($action === 'delete_course') {
        $db->update('courses', ['is_active' => 0], ['id' => intval($_POST['id'])]);
        redirectWithMessage('courses.php?tab=courses', 'Course deactivated.', 'success');
    }
}

// Fetch Categories for dropdowns
$categories = $db->fetchAll("SELECT * FROM course_categories ORDER BY display_order, name");

// Check Edits
$editCat = isset($_GET['edit_cat']) && $_GET['edit_cat']!=='new' ? $db->fetchOne("SELECT * FROM course_categories WHERE id=?", [intval($_GET['edit_cat'])]) : null;
$editSubCat = isset($_GET['edit_subcat']) && $_GET['edit_subcat']!=='new' ? $db->fetchOne("SELECT * FROM course_sub_categories WHERE id=?", [intval($_GET['edit_subcat'])]) : null;
$editCourse = null;
if (isset($_GET['edit_course']) && $_GET['edit_course']!=='new') {
    $editCourse = $db->fetchOne("SELECT c.*, cf.total_fee, cf.admission_fee, cf.exam_fee, cf.certificate_fee 
        FROM courses c LEFT JOIN course_fees cf ON c.id = cf.course_id AND cf.user_type='college' WHERE c.id=?", [intval($_GET['edit_course'])]);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Dynamic Course Management – <?= APP_SHORT_NAME ?></title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
<link href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap5.min.css" rel="stylesheet">
<link href="../assets/css/admin-style.css" rel="stylesheet">
<script src="https://cdn.ckeditor.com/ckeditor5/40.0.0/classic/ckeditor.js"></script>
<style>
    .ck-editor__editable { min-height: 250px; border-radius: 0 0 10px 10px !important; }
    .ck.ck-editor__main>.ck-editor__editable:not(.ck-focused) { border-color: #ccced1; }
    :root{--primary:#3b0b7c;--secondary:#6c4ab6;}
    .cat-badge{background:#f0ebf8;color:var(--primary);border-radius:8px;padding:3px 10px;font-size:.78rem;font-weight:700;}
    .type-badge{background:#e8f4fd;color:#0369a1;border-radius:8px;padding:3px 10px;font-size:.78rem;}
    .table-hover tbody tr:hover { background-color: #f8f9fa; }
</style>
</head>
<body>
<?php include __DIR__ . '/../includes/admin_header.php'; ?>
<div class="container-fluid">
<div class="row">
<?php include __DIR__ . '/../includes/admin_sidebar.php'; ?>
<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4 py-4">

<div class="d-flex justify-content-between align-items-center mb-4">
    <h2 class="h3 fw-bold"><i class="fas fa-book-open me-2 text-primary"></i>Course Management</h2>
    <?php if ($tab === 'courses'): ?>
        <a href="?tab=courses&edit_course=new" class="btn btn-primary px-4"><i class="fas fa-plus me-2"></i>Add Course</a>
    <?php elseif ($tab === 'sub_categories'): ?>
        <a href="?tab=sub_categories&edit_subcat=new" class="btn btn-primary px-4"><i class="fas fa-plus me-2"></i>Add Sub-Category</a>
    <?php else: ?>
        <a href="?tab=categories&edit_cat=new" class="btn btn-primary px-4"><i class="fas fa-plus me-2"></i>Add Category</a>
    <?php endif; ?>
</div>

<?php if ($flash): ?>
<div class="alert alert-<?= $flash['type'] ?> alert-dismissible fade show rounded-3 mb-4">
    <?= htmlspecialchars($flash['message']) ?>
    <button class="btn-close" data-bs-dismiss="alert"></button>
</div>
<?php endif; ?>

<!-- Tabs -->
<ul class="nav nav-pills mb-4 gap-2 border-bottom pb-2">
    <li class="nav-item"><a class="nav-link <?= $tab==='categories'?'active fw-bold':'' ?>" href="?tab=categories"><i class="fas fa-tags me-1"></i>1. Categories</a></li>
    <li class="nav-item"><a class="nav-link <?= $tab==='sub_categories'?'active fw-bold':'' ?>" href="?tab=sub_categories"><i class="fas fa-sitemap me-1"></i>2. Sub-Categories</a></li>
    <li class="nav-item"><a class="nav-link <?= $tab==='courses'?'active fw-bold':'' ?>" href="?tab=courses"><i class="fas fa-book me-1"></i>3. Courses</a></li>
</ul>

<!-- ================= CATEGORIES TAB ================= -->
<?php if ($tab === 'categories'): ?>
    <?php if (isset($_GET['edit_cat'])): ?>
        <div class="card shadow-sm border-0 rounded-4">
            <div class="card-header bg-primary text-white fw-bold"><i class="fas fa-<?= $editCat?'edit':'plus' ?> me-2"></i><?= $editCat?'Edit Category':'Add New Category' ?></div>
            <div class="card-body">
                <form method="POST" enctype="multipart/form-data">
                    <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>">
                    <input type="hidden" name="action" value="save_category">
                    <input type="hidden" name="id" value="<?= $editCat['id'] ?? '' ?>">
                    <div class="row g-3">
                        <div class="col-md-6">
                            <label class="fw-bold small">Category Name *</label>
                            <input type="text" name="name" class="form-control" required value="<?= htmlspecialchars($editCat['name'] ?? '') ?>" placeholder="e.g. Healthcare Sector">
                        </div>
                        <div class="col-md-3">
                            <label class="fw-bold small">Display Order</label>
                            <input type="number" name="display_order" class="form-control" value="<?= $editCat['display_order'] ?? 0 ?>">
                        </div>
                        <div class="col-md-3">
                            <label class="fw-bold small">Status</label>
                            <select name="is_active" class="form-select">
                                <option value="1" <?= ($editCat['is_active']??1)==1?'selected':'' ?>>Active</option>
                                <option value="0" <?= ($editCat['is_active']??1)==0?'selected':'' ?>>Inactive</option>
                            </select>
                        </div>
                        <div class="col-md-12">
                            <label class="fw-bold small">Category Image (Optional)</label>
                            <input type="file" name="category_image" class="form-control" accept="image/*">
                            <?php if(!empty($editCat['image'])): ?>
                                <img src="../<?= $editCat['image'] ?>" class="mt-2 rounded shadow-sm" style="height:50px;">
                            <?php endif; ?>
                        </div>
                        <div class="col-12 mt-3">
                            <button type="submit" class="btn btn-primary px-4">Save Category</button>
                            <a href="?tab=categories" class="btn btn-secondary">Cancel</a>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    <?php else: ?>
        <?php $listCats = $db->fetchAll("SELECT * FROM course_categories ORDER BY display_order, name"); ?>
        <div class="card shadow-sm border-0 rounded-4 p-3">
            <table class="table table-hover align-middle mb-0 dataTable">
                <thead class="bg-light">
                    <tr><th>Name</th><th>Status</th><th>Order</th><th class="text-end pe-4">Actions</th></tr>
                </thead>
                <tbody>
                    <?php foreach($listCats as $c): ?>
                    <tr>
                        <td class="fw-bold"><?= htmlspecialchars($c['name']) ?></td>
                        <td><span class="badge bg-<?= $c['is_active']?'success':'secondary' ?>"><?= $c['is_active']?'Active':'Inactive' ?></span></td>
                        <td><?= $c['display_order'] ?></td>
                        <td class="text-end pe-4">
                            <a href="?tab=categories&edit_cat=<?= $c['id'] ?>" class="btn btn-sm btn-outline-primary"><i class="fas fa-edit"></i></a>
                            <form method="POST" class="d-inline" onsubmit="return confirm('Delete category?')">
                                <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>"><input type="hidden" name="action" value="delete_category"><input type="hidden" name="id" value="<?= $c['id'] ?>">
                                <button class="btn btn-sm btn-outline-danger"><i class="fas fa-trash"></i></button>
                            </form>
                        </td>
                    </tr>
                    <?php endforeach; ?>
                    <?php if(!$listCats): ?><tr><td colspan="4" class="text-center py-4">No categories found.</td></tr><?php endif; ?>
                </tbody>
            </table>
        </div>
    <?php endif; ?>
<?php endif; ?>

<!-- ================= SUB-CATEGORIES TAB ================= -->
<?php if ($tab === 'sub_categories'): ?>
    <?php if (isset($_GET['edit_subcat'])): ?>
        <div class="card shadow-sm border-0 rounded-4">
            <div class="card-header bg-primary text-white fw-bold"><i class="fas fa-<?= $editSubCat?'edit':'plus' ?> me-2"></i><?= $editSubCat?'Edit Sub-Category':'Add Sub-Category' ?></div>
            <div class="card-body">
                <form method="POST" enctype="multipart/form-data">
                    <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>">
                    <input type="hidden" name="action" value="save_sub_category">
                    <input type="hidden" name="id" value="<?= $editSubCat['id'] ?? '' ?>">
                    <div class="row g-3">
                        <div class="col-md-6">
                            <label class="fw-bold small">Parent Category *</label>
                            <select name="category_id" class="form-select" required>
                                <option value="">-- Select --</option>
                                <?php foreach($categories as $cat): ?>
                                <option value="<?= $cat['id'] ?>" <?= ($editSubCat['category_id']??'')==$cat['id']?'selected':'' ?>><?= htmlspecialchars($cat['name']) ?></option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="col-md-6">
                            <label class="fw-bold small">Sub-Category Name *</label>
                            <input type="text" name="name" class="form-control" required value="<?= htmlspecialchars($editSubCat['name'] ?? '') ?>" placeholder="e.g. Mechanical">
                        </div>
                        <div class="col-md-3">
                            <label class="fw-bold small">Display Order</label>
                            <input type="number" name="display_order" class="form-control" value="<?= $editSubCat['display_order'] ?? 0 ?>">
                        </div>
                        <div class="col-md-3">
                            <label class="fw-bold small">Status</label>
                            <select name="is_active" class="form-select">
                                <option value="1" <?= ($editSubCat['is_active']??1)==1?'selected':'' ?>>Active</option>
                                <option value="0" <?= ($editSubCat['is_active']??1)==0?'selected':'' ?>>Inactive</option>
                            </select>
                        </div>
                        <div class="col-12 mt-3">
                            <button type="submit" class="btn btn-primary px-4">Save Sub-Category</button>
                            <a href="?tab=sub_categories" class="btn btn-secondary">Cancel</a>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    <?php else: ?>
        <?php $listSubCats = $db->fetchAll("SELECT sc.*, c.name as cat_name FROM course_sub_categories sc JOIN course_categories c ON sc.category_id = c.id ORDER BY c.display_order, sc.display_order, sc.name"); ?>
        <div class="card shadow-sm border-0 rounded-4 p-3">
            <table class="table table-hover align-middle mb-0 dataTable">
                <thead class="bg-light">
                    <tr><th>Parent Category</th><th>Sub-Category Name</th><th>Status</th><th class="text-end pe-4">Actions</th></tr>
                </thead>
                <tbody>
                    <?php foreach($listSubCats as $sc): ?>
                    <tr>
                        <td><span class="cat-badge"><?= htmlspecialchars($sc['cat_name']) ?></span></td>
                        <td class="fw-bold"><?= htmlspecialchars($sc['name']) ?></td>
                        <td><span class="badge bg-<?= $sc['is_active']?'success':'secondary' ?>"><?= $sc['is_active']?'Active':'Inactive' ?></span></td>
                        <td class="text-end pe-4">
                            <a href="?tab=sub_categories&edit_subcat=<?= $sc['id'] ?>" class="btn btn-sm btn-outline-primary"><i class="fas fa-edit"></i></a>
                            <form method="POST" class="d-inline" onsubmit="return confirm('Delete sub-category?')">
                                <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>"><input type="hidden" name="action" value="delete_sub_category"><input type="hidden" name="id" value="<?= $sc['id'] ?>">
                                <button class="btn btn-sm btn-outline-danger"><i class="fas fa-trash"></i></button>
                            </form>
                        </td>
                    </tr>
                    <?php endforeach; ?>
                    <?php if(!$listSubCats): ?><tr><td colspan="4" class="text-center py-4">No sub-categories found.</td></tr><?php endif; ?>
                </tbody>
            </table>
        </div>
    <?php endif; ?>
<?php endif; ?>

<!-- ================= COURSES TAB ================= -->
<?php if ($tab === 'courses'): ?>
    <?php if (isset($_GET['edit_course'])): ?>
        <div class="card shadow-sm border-0 rounded-4 mb-4">
            <div class="card-header bg-primary text-white fw-bold"><i class="fas fa-<?= $editCourse?'edit':'plus' ?> me-2"></i><?= $editCourse?'Edit Course':'Add New Course' ?></div>
            <div class="card-body p-4">
                <form method="POST" enctype="multipart/form-data">
                    <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>">
                    <input type="hidden" name="action" value="save_course">
                    <input type="hidden" name="id" value="<?= $editCourse['id'] ?? '' ?>">
                    
                    <h6 class="fw-bold border-bottom pb-2 mb-3 text-secondary">Course Classification</h6>
                    <div class="row g-3 mb-4">
                        <div class="col-md-4">
                            <label class="fw-bold small">Course Type *</label>
                            <select name="course_type" class="form-select bg-light fw-bold" required>
                                <option value="">-- Select Type --</option>
                                <?php $types = ['Short Term Course', 'Diploma', 'Certificate', '6 Months Course', '3 Months Course']; ?>
                                <?php foreach($types as $t): ?>
                                    <option value="<?= $t ?>" <?= ($editCourse['course_type']??'')==$t?'selected':'' ?>><?= $t ?></option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="col-md-4">
                            <label class="fw-bold small">Category *</label>
                            <select name="category_id" id="catSelect" class="form-select" required onchange="loadSubCats()">
                                <option value="">-- Select Category --</option>
                                <?php foreach($categories as $cat): ?>
                                <option value="<?= $cat['id'] ?>" <?= ($editCourse['category_id']??'')==$cat['id']?'selected':'' ?>><?= htmlspecialchars($cat['name']) ?></option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="col-md-4">
                            <label class="fw-bold small">Sub-Category *</label>
                            <select name="sub_category_id" id="subCatSelect" class="form-select" required>
                                <option value="">-- Select Sub-Category --</option>
                            </select>
                        </div>
                    </div>

                    <h6 class="fw-bold border-bottom pb-2 mb-3 text-secondary">Basic Details</h6>
                    <div class="row g-3 mb-4">
                        <div class="col-md-3">
                            <label class="fw-bold small">Course Code</label>
                            <input type="text" name="course_code" class="form-control" value="<?= htmlspecialchars($editCourse['course_code'] ?? '') ?>" placeholder="Auto-generated" <?= $editCourse?'':'readonly' ?>>
                        </div>
                        <div class="col-md-6">
                            <label class="fw-bold small">Course Name *</label>
                            <input type="text" name="course_name" class="form-control" required value="<?= htmlspecialchars($editCourse['course_name'] ?? '') ?>" placeholder="e.g. Mechanical Engineering">
                        </div>
                        <div class="col-md-3">
                            <label class="fw-bold small">Short Name</label>
                            <input type="text" name="short_name" class="form-control" value="<?= htmlspecialchars($editCourse['short_name'] ?? '') ?>" placeholder="e.g. Mech">
                        </div>
                        <div class="col-md-4">
                            <label class="fw-bold small">Duration (Years)</label>
                            <input type="number" name="dur_years" class="form-control" min="0" max="5" value="<?= $editCourse['dur_years'] ?? 0 ?>">
                        </div>
                        <div class="col-md-4">
                            <label class="fw-bold small">Duration (Months)</label>
                            <input type="number" name="dur_months" class="form-control" min="0" max="11" value="<?= $editCourse['dur_months'] ?? 0 ?>">
                        </div>
                        <div class="col-md-4">
                            <label class="fw-bold small">Eligibility</label>
                            <input type="text" name="eligibility" class="form-control" value="<?= htmlspecialchars($editCourse['eligibility'] ?? '') ?>" placeholder="e.g. 10th Pass">
                        </div>
                    </div>

                    <h6 class="fw-bold border-bottom pb-2 mb-3 text-secondary">Fees & Status</h6>
                    <div class="row g-3 mb-4">
                        <div class="col-md-3">
                            <label class="fw-bold small">Admission Fee (₹)</label>
                            <input type="number" name="fee_admission" class="form-control fee-calc" step="0.01" value="<?= $editCourse['admission_fee'] ?? 0 ?>">
                        </div>
                        <div class="col-md-3">
                            <label class="fw-bold small">Exam Fee (₹)</label>
                            <input type="number" name="fee_exam" class="form-control fee-calc" step="0.01" value="<?= $editCourse['exam_fee'] ?? 0 ?>">
                        </div>
                        <div class="col-md-3">
                            <label class="fw-bold small">Certificate Fee (₹)</label>
                            <input type="number" name="fee_cert" class="form-control fee-calc" step="0.01" value="<?= $editCourse['certificate_fee'] ?? 0 ?>">
                        </div>
                        <div class="col-md-3">
                            <label class="fw-bold small">Total Fee (₹)</label>
                            <div class="form-control bg-light fw-bold text-success" id="totFee">₹<?= number_format($editCourse['total_fee'] ?? 0, 2) ?></div>
                        </div>
                        <div class="col-md-3">
                            <label class="fw-bold small">Status</label>
                            <select name="is_active" class="form-select">
                                <option value="1" <?= ($editCourse['is_active']??1)==1?'selected':'' ?>>Active</option>
                                <option value="0" <?= ($editCourse['is_active']??1)==0?'selected':'' ?>>Inactive</option>
                            </select>
                        </div>
                    </div>

                    <h6 class="fw-bold border-bottom pb-2 mb-3 text-secondary">Syllabus Details</h6>
                    <div class="row g-3 mb-4">
                        <div class="col-md-6">
                            <label class="fw-bold small">Upload Syllabus (PDF)</label>
                            <input type="file" name="syllabus_pdf" class="form-control" accept=".pdf">
                            <?php if(!empty($editCourse['syllabus_pdf'])): ?>
                                <a href="../<?= $editCourse['syllabus_pdf'] ?>" target="_blank" class="small mt-1 d-inline-block"><i class="fas fa-file-pdf text-danger me-1"></i>View Current PDF</a>
                            <?php endif; ?>
                        </div>
                        <div class="col-12 mt-3">
                            <label class="fw-bold small">Or Type Syllabus (Rich Text)</label>
                            <textarea name="syllabus_text" id="editor" class="form-control"><?= htmlspecialchars($editCourse['syllabus_text'] ?? '') ?></textarea>
                        </div>
                    </div>

                    <div class="mt-4">
                        <button type="submit" class="btn btn-primary px-5 fw-bold"><i class="fas fa-save me-2"></i>Save Course Data</button>
                        <a href="?tab=courses" class="btn btn-outline-secondary px-4 ms-2">Cancel</a>
                    </div>
                </form>
            </div>
        </div>
        
        <?php
        // Fetch all sub-categories mapped by category to feed JS
        $allSubCats = $db->fetchAll("SELECT id, category_id, name FROM course_sub_categories WHERE is_active=1");
        $jsonSubs = json_encode($allSubCats);
        $selectedSub = $editCourse['sub_category_id'] ?? 0;
        ?>
        <script>
        const subsData = <?= $jsonSubs ?>;
        const selectedSub = <?= $selectedSub ?>;
        
        function loadSubCats() {
            const catId = document.getElementById('catSelect').value;
            const subSel = document.getElementById('subCatSelect');
            subSel.innerHTML = '<option value="">-- Select Sub-Category --</option>';
            if(catId) {
                const filtered = subsData.filter(s => s.category_id == catId);
                filtered.forEach(s => {
                    let isSel = (s.id == selectedSub) ? 'selected' : '';
                    subSel.innerHTML += `<option value="${s.id}" ${isSel}>${s.name}</option>`;
                });
            }
        }
        document.addEventListener('DOMContentLoaded', loadSubCats);

        document.querySelectorAll('.fee-calc').forEach(inp => {
            inp.addEventListener('input', () => {
                let t = 0;
                document.querySelectorAll('.fee-calc').forEach(i => t += parseFloat(i.value||0));
                document.getElementById('totFee').textContent = '₹' + t.toLocaleString('en-IN', {minimumFractionDigits:2});
            });
        });
        ClassicEditor.create(document.querySelector('#editor'), { toolbar: [ 'heading', '|', 'bold', 'italic', 'bulletedList', 'numberedList', 'undo', 'redo' ] }).catch(e=>console.error(e));
        </script>

    <?php else: ?>
        <?php 
        $listCourses = $db->fetchAll("SELECT c.*, cat.name as cat_name, sub.name as sub_name, cf.total_fee 
            FROM courses c 
            JOIN course_categories cat ON c.category_id = cat.id 
            JOIN course_sub_categories sub ON c.sub_category_id = sub.id 
            LEFT JOIN course_fees cf ON c.id = cf.course_id AND cf.user_type='college'
            ORDER BY cat.display_order, sub.display_order, c.course_name"); 
        ?>
        <div class="card shadow-sm border-0 rounded-4 p-3">
            <div class="table-responsive">
            <table class="table table-hover align-middle mb-0 dataTable">
                <thead class="bg-light">
                    <tr><th>Code</th><th>Course Name</th><th>Type</th><th>Category > Sub</th><th>Duration</th><th>Fee</th><th>Status</th><th class="text-end pe-4">Actions</th></tr>
                </thead>
                <tbody>
                    <?php foreach($listCourses as $c): ?>
                    <tr>
                        <td><span class="badge border text-dark"><?= $c['course_code'] ?></span></td>
                        <td class="fw-bold"><?= htmlspecialchars($c['course_name']) ?></td>
                        <td><span class="type-badge"><?= $c['course_type'] ?></span></td>
                        <td class="small text-muted"><?= $c['cat_name'] ?> &raquo; <br><span class="text-dark fw-bold"><?= $c['sub_name'] ?></span></td>
                        <td><?= $c['duration_text'] ?></td>
                        <td class="text-success fw-bold">₹<?= number_format($c['total_fee'] ?? 0, 0) ?></td>
                        <td><span class="badge bg-<?= $c['is_active']?'success':'secondary' ?>"><?= $c['is_active']?'Active':'Inactive' ?></span></td>
                        <td class="text-end pe-4">
                            <a href="?tab=courses&edit_course=<?= $c['id'] ?>" class="btn btn-sm btn-outline-primary"><i class="fas fa-edit"></i></a>
                            <form method="POST" class="d-inline" onsubmit="return confirm('Deactivate course?')">
                                <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>"><input type="hidden" name="action" value="delete_course"><input type="hidden" name="id" value="<?= $c['id'] ?>">
                                <button class="btn btn-sm btn-outline-danger"><i class="fas fa-ban"></i></button>
                            </form>
                        </td>
                    </tr>
                    <?php endforeach; ?>
                    <?php if(!$listCourses): ?><tr><td colspan="8" class="text-center py-4">No courses found.</td></tr><?php endif; ?>
                </tbody>
            </table>
            </div>
        </div>
    <?php endif; ?>
<?php endif; ?>

</main>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.datatables.net/1.13.6/js/dataTables.bootstrap5.min.js"></script>
<script>
$(document).ready(function() {
    $('.dataTable').DataTable({
        pageLength: 25,
        lengthMenu: [10, 25, 50, 100, 200],
        language: {
            search: "_INPUT_",
            searchPlaceholder: "Search records..."
        }
    });
});
</script>
</body>
</html>
