<?php
/**
 * IBVTE Admin – Course Management (Full CRUD)
 * Categories, Courses, Sub-Courses, Fees, Duration
 */
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'] ?? 'sub_courses';

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

// ── Handle POST actions ───────────────────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // CSRF Protection
    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);
        
        // Handle Image Upload for Category
        $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) {
            $uploadDir = '../assets/images/categories/';
            if (!is_dir($uploadDir)) mkdir($uploadDir, 0755, true);
            $ext = pathinfo($_FILES['category_image']['name'], PATHINFO_EXTENSION);
            $fileName = 'cat_' . time() . '_' . rand(100, 999) . '.' . $ext;
            if (move_uploaded_file($_FILES['category_image']['tmp_name'], $uploadDir . $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');
    }

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

        // Duration
        $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';

        // Handle Image Upload
        $imagePath = $id ? $db->fetchColumn("SELECT image FROM courses WHERE id=?", [$id]) : null;
        if (isset($_FILES['course_image']) && $_FILES['course_image']['error'] === UPLOAD_ERR_OK) {
            $uploadDir = '../assets/images/courses/';
            if (!is_dir($uploadDir)) mkdir($uploadDir, 0755, true);
            $ext = pathinfo($_FILES['course_image']['name'], PATHINFO_EXTENSION);
            $fileName = 'course_' . time() . '_' . rand(100, 999) . '.' . $ext;
            if (move_uploaded_file($_FILES['course_image']['tmp_name'], $uploadDir . $fileName)) {
                $imagePath = 'assets/images/courses/' . $fileName;
            }
        }

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

        $data = [
            'course_code'              => $code,
            'course_name'             => trim($_POST['course_name']),
            'short_name'              => trim($_POST['short_name'] ?? ''),
            'category'                => trim($_POST['category'] ?? ''),
            'course_type'             => $_POST['course_type'] ?? 'diploma',
            'duration'                => $durText,
            'duration_months'         => $totalMonths,
            'duration_value'          => $durVal,
            'dur_years'               => $durY,
            'dur_months'              => $durM,
            'eligibility'             => trim($_POST['eligibility'] ?? ''),
            'mode'                    => $_POST['mode'] ?? 'offline',
            'assessment_pass_percent' => floatval($_POST['assessment'] ?? 50),
            'description'             => trim($_POST['description'] ?? ''),
            'is_active'               => intval($_POST['is_active'] ?? 1),
            'image'                   => $imagePath
        ];

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

        // Save fees
        $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');
    }

    // --- SUB-COURSE CRUD ---
    if ($action === 'save_sub_item') {
        $id = intval($_POST['id'] ?? 0);
        $durY = intval($_POST['dur_years'] ?? 0);
        $durM = intval($_POST['dur_months'] ?? 0);
        $durVal = $durY + ($durM / 12);
        
        $durParts = [];
        if ($durY > 0) $durParts[] = $durY . ($durY == 1 ? ' Year' : ' Years');
        if ($durM > 0) $durParts[] = $durM . ($durM == 1 ? ' Month' : ' Months');
        $durLabel = !empty($durParts) ? implode(' ', $durParts) : '0 Months';

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

        // Handle Image Upload for Course (Sub-item)
        $imagePath = $id ? $db->fetchColumn("SELECT image FROM course_sub_items WHERE id=?", [$id]) : null;
        if (isset($_FILES['course_image']) && $_FILES['course_image']['error'] === UPLOAD_ERR_OK) {
            $uploadDir = '../assets/images/courses/';
            if (!is_dir($uploadDir)) mkdir($uploadDir, 0755, true);
            $ext = pathinfo($_FILES['course_image']['name'], PATHINFO_EXTENSION);
            $fileName = 'sub_' . time() . '_' . rand(100, 999) . '.' . $ext;
            if (move_uploaded_file($_FILES['course_image']['tmp_name'], $uploadDir . $fileName)) {
                $imagePath = 'assets/images/courses/' . $fileName;
            }
        }

        $data = [
            'category'        => trim($_POST['category']),
            'sub_name'        => trim($_POST['sub_name']),
            'short_name'      => trim($_POST['short_name'] ?? ''),
            'eligibility'     => trim($_POST['eligibility'] ?? ''),
            'description'     => trim($_POST['description'] ?? ''),
            'image'           => $imagePath,
            'dur_years'       => $durY,
            'dur_months'      => $durM,
            'duration_value'  => $durVal,
            'duration_label'  => $durLabel,
            'admission_fee'   => $admFee,
            'exam_fee'        => $examFee,
            'certificate_fee' => $certFee,
            'total_fee'       => $total,
            'syllabus'        => $_POST['syllabus'] ?? null,
            'is_active'       => intval($_POST['is_active'] ?? 1),
            // Pass null if 0 to avoid FK constraint issues
            'course_id'       => intval($_POST['course_id'] ?? 0) ?: null 
        ];

        if ($id) $db->update('course_sub_items', $data, ['id' => $id]);
        else     $db->insert('course_sub_items', $data);

        redirectWithMessage('courses.php?tab=sub_courses', 'Course saved successfully.', 'success');
    }

    if ($action === 'delete_sub_item') {
        $db->delete('course_sub_items', ['id' => intval($_POST['id'])]);
        redirectWithMessage('courses.php?tab=sub_courses', 'Sub-Course deleted.', 'success');
    }
}

// ── Fetch Data ────────────────────────────────────────────────────────────────
// --- MAIN COURSE FETCH WITH SEARCH & PAGINATION ---
$searchMain = $_GET['search_main'] ?? '';
$pageMain = max(1, intval($_GET['page_main'] ?? 1));
$limitMain = 10;
$offsetMain = ($pageMain - 1) * $limitMain;

$mainWhere = " WHERE 1=1 ";
$mainParams = [];
if (!empty($searchMain)) {
    $mainWhere .= " AND (c.course_name LIKE ? OR c.course_code LIKE ? OR c.category LIKE ?) ";
    $mainParams = ["%$searchMain%", "%$searchMain%", "%$searchMain%"];
}

$totalMain = $db->fetchColumn("
    SELECT COUNT(*) FROM courses c
    $mainWhere
", $mainParams);

$courses = $db->fetchAll("
    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'
    $mainWhere
    ORDER BY c.category, c.display_order, c.course_name
    LIMIT $limitMain OFFSET $offsetMain
", $mainParams);

$totalPagesMain = ceil($totalMain / $limitMain);

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

// --- SUB-COURSE FETCH WITH SEARCH & PAGINATION ---
$searchSub = $_GET['search_sub'] ?? '';
$page = max(1, intval($_GET['page'] ?? 1));
$limit = 10;
$offset = ($page - 1) * $limit;

$subWhere = " WHERE 1=1 ";
$subParams = [];
if (!empty($searchSub)) {
    $subWhere .= " AND (s.sub_name LIKE ? OR c.course_name LIKE ? OR c.course_code LIKE ?) ";
    $subParams = ["%$searchSub%", "%$searchSub%", "%$searchSub%"];
}

$totalSub = $db->fetchColumn("
    SELECT COUNT(*) 
    FROM course_sub_items s
    LEFT JOIN courses c ON s.course_id = c.id
    $subWhere
", $subParams);

$subItems = $db->fetchAll("
    SELECT s.*, c.course_name as parent_course
    FROM course_sub_items s
    LEFT JOIN courses c ON s.course_id = c.id
    $subWhere
    ORDER BY c.course_name, s.duration_value
    LIMIT $limit OFFSET $offset
", $subParams);

$totalPages = ceil($totalSub / $limit);

$editCourse = null;
if (isset($_GET['edit'])) {
    $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'])]);
}
$editCat = isset($_GET['edit_cat']) ? $db->fetchOne("SELECT * FROM course_categories WHERE id=?", [intval($_GET['edit_cat'])]) : null;
$editSub = isset($_GET['edit_sub']) ? $db->fetchOne("SELECT * FROM course_sub_items WHERE id=?", [intval($_GET['edit_sub'])]) : null;
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>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="../assets/css/admin-style.css" rel="stylesheet">
<!-- CKEditor 5 for Syllabus -->
<script src="https://cdn.ckeditor.com/ckeditor5/40.0.0/classic/ckeditor.js"></script>
<style>
    .ck-editor__editable {
        min-height: 400px;
        border-radius: 0 0 10px 10px !important;
    }
    .ck.ck-editor__main>.ck-editor__editable:not(.ck-focused) {
        border-color: #ccced1;
    }
</style>
<style>
:root{--primary:#3b0b7c;--secondary:#6c4ab6;}
.course-card{border-radius:14px;border:none;box-shadow:0 3px 12px rgba(0,0,0,.07);transition:.2s;}
.course-card:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(59,11,124,.12);}
.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;}
.fee-box{background:#f8f9fa;border-radius:10px;padding:12px;font-size:.85rem;}
</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=new" class="btn btn-primary px-4">
        <i class="fas fa-plus me-2"></i>Add Course
    </a>
    <?php elseif ($tab === 'sub_courses'): ?>
    <a href="?tab=sub_courses&edit_sub=new" class="btn btn-primary px-4">
        <i class="fas fa-plus me-2"></i>Add Sub-Course
    </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">
    <li class="nav-item"><a class="nav-link <?= $tab==='sub_courses'?'active':'' ?>" href="?tab=sub_courses">
        <i class="fas fa-book me-1"></i>Courses (Duration-based)</a></li>
    <li class="nav-item"><a class="nav-link <?= $tab==='categories'?'active':'' ?>" href="?tab=categories">
        <i class="fas fa-tags me-1"></i>Categories</a></li>
</ul>

<!-- ═══════════════ COURSE FORM ═══════════════ -->
<?php if ($tab === 'courses' && isset($_GET['edit'])): ?>
<div class="card border-0 shadow-sm rounded-4 mb-4">
    <div class="card-header fw-bold py-3" style="background:linear-gradient(135deg,var(--primary),var(--secondary));color:white;border-radius:15px 15px 0 0;">
        <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'] ?? '' ?>">
        <div class="row g-3">
            <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-5">
                <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. Diploma in Computer Applications">
            </div>
            <div class="col-md-4">
                <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. Computer">
            </div>
            <div class="col-md-4">
                <label class="fw-bold small">Category *</label>
                <select name="category" class="form-select" required>
                    <option value="">-- Select --</option>
                    <?php foreach ($categories as $cat): ?>
                    <option value="<?= htmlspecialchars($cat['name']) ?>"
                        <?= ($editCourse['category'] ?? '') === $cat['name'] ? 'selected' : '' ?>>
                        <?= htmlspecialchars($cat['name']) ?>
                    </option>
                    <?php endforeach; ?>
                </select>
            </div>
            <div class="col-md-4">
                <label class="fw-bold small">Course Type *</label>
                <select name="course_type" class="form-select" required>
                    <option value="certification"  <?= ($editCourse['course_type']??'')=='certification'?'selected':'' ?>>Certification</option>
                    <option value="diploma"        <?= ($editCourse['course_type']??'diploma')=='diploma'?'selected':'' ?>>Diploma</option>
                    <option value="advanced_diploma" <?= ($editCourse['course_type']??'')=='advanced_diploma'?'selected':'' ?>>Advanced Diploma</option>
                    <option value="pgd"            <?= ($editCourse['course_type']??'')=='pgd'?'selected':'' ?>>PGD</option>
                </select>
            </div>
            <div class="col-md-4">
                <label class="fw-bold small">Mode</label>
                <select name="mode" class="form-select">
                    <option value="offline" <?= ($editCourse['mode']??'offline')=='offline'?'selected':'' ?>>Offline</option>
                    <option value="online"  <?= ($editCourse['mode']??'')=='online'?'selected':'' ?>>Online</option>
                    <option value="hybrid"  <?= ($editCourse['mode']??'')=='hybrid'?'selected':'' ?>>Hybrid</option>
                </select>
            </div>
            <div class="col-md-3">
                <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'] ?? 1 ?>">
            </div>
            <div class="col-md-3">
                <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-3">
                <label class="fw-bold small">Pass % (Assessment)</label>
                <input type="number" name="assessment" class="form-control" min="1" max="100" value="<?= $editCourse['assessment_pass_percent'] ?? 50 ?>">
            </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 class="col-md-6">
                <label class="fw-bold small">Course Image</label>
                <input type="file" name="course_image" class="form-control" accept="image/*">
                <?php if (!empty($editCourse['image'])): ?>
                    <div class="mt-2"><img src="../<?= $editCourse['image'] ?>" height="50" class="rounded border"></div>
                <?php endif; ?>
            </div>
            <div class="col-12">
                <label class="fw-bold small">Course Description</label>
                <textarea name="description" class="form-control" rows="3"><?= htmlspecialchars($editCourse['description'] ?? '') ?></textarea>
            </div>

            <div class="col-12"><hr class="my-1"><h6 class="fw-bold text-primary"><i class="fas fa-rupee-sign me-1"></i>College Fee Structure</h6></div>
            <div class="col-md-3">
                <label class="fw-bold small">Admission Fee (₹)</label>
                <input type="number" name="fee_admission" class="form-control fee-input" step="0.01" value="<?= $editCourse['admission_fee'] ?? 0 ?>" oninput="calcTotal('fee-input', 'totalFee')">
            </div>
            <div class="col-md-3">
                <label class="fw-bold small">Exam Fee (₹)</label>
                <input type="number" name="fee_exam" class="form-control fee-input" step="0.01" value="<?= $editCourse['exam_fee'] ?? 0 ?>" oninput="calcTotal('fee-input', 'totalFee')">
            </div>
            <div class="col-md-3">
                <label class="fw-bold small">Certificate Fee (₹)</label>
                <input type="number" name="fee_cert" class="form-control fee-input" step="0.01" value="<?= $editCourse['certificate_fee'] ?? 0 ?>" oninput="calcTotal('fee-input', 'totalFee')">
            </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="totalFee">₹<?= number_format(($editCourse['total_fee'] ?? 0), 2) ?></div>
            </div>
        </div>
        <div class="d-flex gap-2 mt-4">
            <button type="submit" class="btn btn-primary px-5 fw-bold"><i class="fas fa-save me-2"></i>Save Course</button>
            <a href="?tab=courses" class="btn btn-secondary">Cancel</a>
        </div>
    </form>
    </div>
</div>
<?php endif; ?>

<!-- ═══════════════ SUB-COURSE FORM ═══════════════ -->
<?php if ($tab === 'sub_courses' && isset($_GET['edit_sub'])): ?>
<div class="card border-0 shadow-sm rounded-4 mb-4">
    <div class="card-header fw-bold py-3" style="background:linear-gradient(135deg,var(--primary),var(--secondary));color:white;border-radius:15px 15px 0 0;">
        <i class="fas fa-<?= $editSub?'edit':'plus' ?> me-2"></i><?= $editSub?'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_sub_item">
        <input type="hidden" name="id" value="<?= $editSub['id'] ?? '' ?>">
        
        <div class="row g-3">
            <div class="col-md-6">
                <label class="fw-bold small">Category *</label>
                <select name="category" class="form-select" required>
                    <option value="">-- Select Category --</option>
                    <?php foreach ($categories as $cat): ?>
                    <option value="<?= htmlspecialchars($cat['name']) ?>" <?= ($editSub['category']??'') == $cat['name'] ? 'selected' : '' ?>>
                        <?= htmlspecialchars($cat['name']) ?>
                    </option>
                    <?php endforeach; ?>
                </select>
            </div>
            <div class="col-md-6">
                <label class="fw-bold small">Course Name (with duration) *</label>
                <input type="text" name="sub_name" class="form-control" required value="<?= htmlspecialchars($editSub['sub_name'] ?? '') ?>" placeholder="e.g. Diploma in Computer Applications (1 Year)">
            </div>

            <div class="col-md-4">
                <label class="fw-bold small">Short Name</label>
                <input type="text" name="short_name" class="form-control" value="<?= htmlspecialchars($editSub['short_name'] ?? '') ?>" placeholder="e.g. DCA">
            </div>
            <div class="col-md-4">
                <label class="fw-bold small">Eligibility</label>
                <input type="text" name="eligibility" class="form-control" value="<?= htmlspecialchars($editSub['eligibility'] ?? '') ?>" placeholder="e.g. 10th Pass">
            </div>
            <div class="col-md-4">
                <label class="fw-bold small">Course Image</label>
                <input type="file" name="course_image" class="form-control" accept="image/*">
                <?php if (!empty($editSub['image'])): ?>
                    <div class="mt-1"><img src="../<?= $editSub['image'] ?>" height="40" class="rounded shadow-sm"></div>
                <?php endif; ?>
            </div>

            <div class="col-12">
                <label class="fw-bold small">Course Description</label>
                <textarea name="description" class="form-control" rows="2"><?= htmlspecialchars($editSub['description'] ?? '') ?></textarea>
            </div>

            <div class="col-md-3">
                <label class="fw-bold small">Duration (Years)</label>
                <input type="number" name="dur_years" class="form-control" min="0" max="5" value="<?= $editSub['dur_years'] ?? 1 ?>">
            </div>
            <div class="col-md-3">
                <label class="fw-bold small">Duration (Months)</label>
                <input type="number" name="dur_months" class="form-control" min="0" max="11" value="<?= $editSub['dur_months'] ?? 0 ?>">
            </div>
            <div class="col-md-3">
                <label class="fw-bold small">Status</label>
                <select name="is_active" class="form-select">
                    <option value="1" <?= ($editSub['is_active']??1)==1?'selected':'' ?>>Active</option>
                    <option value="0" <?= ($editSub['is_active']??1)==0?'selected':'' ?>>Inactive</option>
                </select>
            </div>
            <div class="col-md-3">
                <label class="fw-bold small">Template Mapping (Internal)</label>
                <select name="course_id" class="form-select bg-light">
                    <option value="0">-- None --</option>
                    <?php foreach ($courses as $c): ?>
                    <option value="<?= $c['id'] ?>" <?= ($editSub['course_id']??'') == $c['id'] ? 'selected' : '' ?>>
                        <?= htmlspecialchars($c['course_name']) ?>
                    </option>
                    <?php endforeach; ?>
                </select>
            </div>

            <div class="col-12"><hr class="my-1"><h6 class="fw-bold text-primary"><i class="fas fa-rupee-sign me-1"></i>Course Fee Structure</h6></div>
            <div class="col-md-3">
                <label class="fw-bold small">Admission Fee (₹)</label>
                <input type="number" name="fee_admission" class="form-control sub-fee-input" step="0.01" value="<?= $editSub['admission_fee'] ?? 0 ?>" oninput="calcTotal('sub-fee-input', 'subTotalFee')">
            </div>
            <div class="col-md-3">
                <label class="fw-bold small">Exam Fee (₹)</label>
                <input type="number" name="fee_exam" class="form-control sub-fee-input" step="0.01" value="<?= $editSub['fee_exam'] ?? 0 ?>" oninput="calcTotal('sub-fee-input', 'subTotalFee')">
            </div>
            <div class="col-md-3">
                <label class="fw-bold small">Certificate Fee (₹)</label>
                <input type="number" name="fee_cert" class="form-control sub-fee-input" step="0.01" value="<?= $editSub['fee_cert'] ?? 0 ?>" oninput="calcTotal('sub-fee-input', 'subTotalFee')">
            </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="subTotalFee">₹<?= number_format(($editSub['total_fee'] ?? 0), 2) ?></div>
            </div>

            <div class="col-12 mt-3">
                <label class="fw-bold small mb-2"><i class="fas fa-file-alt me-1 text-primary"></i>Detailed Syllabus (Rich Text)</label>
                <textarea name="syllabus" id="syllabus_editor" class="form-control"><?= htmlspecialchars($editSub['syllabus'] ?? '') ?></textarea>
            </div>
        </div>
        <div class="d-flex gap-2 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=sub_courses" class="btn btn-secondary">Cancel</a>
        </div>
    </form>
    </div>
</div>
<?php endif; ?>

<!-- ═══════════════ COURSES LIST ═══════════════ -->
<?php if ($tab === 'courses' && !isset($_GET['edit'])): ?>
<div class="row mb-3 align-items-center">
    <div class="col-md-6">
        <form method="GET" class="d-flex">
            <input type="hidden" name="tab" value="courses">
            <input type="text" name="search_main" class="form-control me-2" placeholder="Search courses..." value="<?= htmlspecialchars($searchMain) ?>">
            <button type="submit" class="btn btn-outline-primary px-3">Search</button>
            <?php if ($searchMain): ?><a href="?tab=courses" class="btn btn-link">Clear</a><?php endif; ?>
        </form>
    </div>
    <div class="col-md-6 text-end text-muted small">
        Showing <?= count($courses) ?> of <?= $totalMain ?> courses
    </div>
</div>
<div class="card border-0 shadow-sm rounded-4 mb-4">
    <div class="table-responsive">
    <table class="table table-hover align-middle mb-0">
        <thead class="bg-light">
            <tr>
                <th class="ps-3" style="width: 40px;">
                    <div class="form-check">
                        <input class="form-check-input" type="checkbox" id="selectAllCourses">
                    </div>
                </th>
                <th>Code</th><th>Name</th><th>Category</th><th>Type</th><th>Duration</th><th>Mode</th><th>Fee</th><th>Status</th><th class="text-end pe-3">Actions</th>
            </tr>
        </thead>
        <tbody>
            <?php if (empty($courses)): ?><tr><td colspan="9" class="text-center py-4">No courses found.</td></tr><?php endif; ?>
            <?php foreach ($courses as $c): ?>
            <tr data-course-id="<?= $c['id'] ?>">
                <td class="ps-3">
                    <div class="form-check">
                        <input class="form-check-input course-checkbox" type="checkbox" value="<?= $c['id'] ?>">
                    </div>
                </td>
                <td><span class="badge bg-light text-primary border fw-bold"><?= $c['course_code'] ?></span></td>
                <td class="fw-bold"><?= htmlspecialchars($c['course_name']) ?></td>
                <td><span class="cat-badge"><?= $c['category'] ?></span></td>
                <td><span class="type-badge"><?= ucfirst($c['course_type']) ?></span></td>
                <td><?= $c['duration'] ?></td>
                <td><?= ucfirst($c['mode']) ?></td>
                <td class="fw-bold text-success">₹<?= number_format((float)($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-3">
                    <a href="manage-subjects.php?course_id=<?= $c['id'] ?>" class="btn btn-sm btn-outline-info" title="Manage Subjects"><i class="fas fa-book"></i></a>
                    <a href="?tab=courses&edit=<?= $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?')">
                        <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-trash"></i></button>
                    </form>
                </td>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
    </div>
</div>

<div id="bulkActions" class="mb-4 d-none">
    <div class="alert alert-secondary d-flex justify-content-between align-items-center rounded-3 shadow-sm py-2">
        <div>
            <span id="selectedCount" class="fw-bold text-primary">0</span> courses selected
        </div>
        <div class="d-flex gap-2">
            <button class="btn btn-sm btn-outline-danger" onclick="bulkAction('deactivate')">
                <i class="fas fa-ban me-1"></i> Deactivate Selected
            </button>
            <button class="btn btn-sm btn-outline-success" onclick="bulkAction('activate')">
                <i class="fas fa-check-circle me-1"></i> Activate Selected
            </button>
        </div>
    </div>
</div>

<?php if ($totalPagesMain > 1): ?>
<nav>
    <ul class="pagination justify-content-center">
        <?php for ($i = 1; $i <= $totalPagesMain; $i++): ?>
        <li class="page-item <?= $pageMain === $i ? 'active' : '' ?>">
            <a class="page-link" href="?tab=courses&page_main=<?= $i ?>&search_main=<?= urlencode($searchMain) ?>"><?= $i ?></a>
        </li>
        <?php endfor; ?>
    </ul>
</nav>
<?php endif; ?>
<?php endif; ?>

<!-- ═══════════════ SUB-COURSES LIST ═══════════════ -->
<?php if ($tab === 'sub_courses' && !isset($_GET['edit_sub'])): ?>
<div class="row mb-3 align-items-center">
    <div class="col-md-6">
        <form method="GET" class="d-flex">
            <input type="hidden" name="tab" value="sub_courses">
            <input type="text" name="search_sub" class="form-control me-2" placeholder="Search sub-courses..." value="<?= htmlspecialchars($searchSub) ?>">
            <button type="submit" class="btn btn-outline-primary px-3">Search</button>
            <?php if ($searchSub): ?><a href="?tab=sub_courses" class="btn btn-link">Clear</a><?php endif; ?>
        </form>
    </div>
    <div class="col-md-6 text-end text-muted small">
        Showing <?= count($subItems) ?> of <?= $totalSub ?> sub-courses
    </div>
</div>
<div class="card border-0 shadow-sm rounded-4 mb-4">
    <div class="table-responsive">
    <table class="table table-hover align-middle mb-0">
        <thead class="bg-light">
            <tr>
                <th class="ps-3">Category</th><th>Course Name</th><th>Duration</th><th>Syllabus</th><th>Total Fee</th><th>Status</th><th class="text-end pe-3">Actions</th>
            </tr>
        </thead>
        <tbody>
            <?php if (empty($subItems)): ?><tr><td colspan="7" class="text-center py-4">No sub-courses found.</td></tr><?php endif; ?>
            <?php foreach ($subItems as $s): ?>
            <tr>
                <td class="ps-3 small fw-bold text-muted"><?= htmlspecialchars($s['category'] ?? 'Uncategorized') ?></td>
                <td class="fw-bold"><?= htmlspecialchars($s['sub_name']) ?></td>
                <td><span class="badge bg-info text-dark"><?= $s['duration_label'] ?></span></td>
                <td>
                    <?php if (!empty($s['syllabus'])): ?>
                        <span class="badge bg-success-subtle text-success border border-success-subtle"><i class="fas fa-check me-1"></i>Added</span>
                    <?php else: ?>
                        <span class="badge bg-warning-subtle text-warning border border-warning-subtle"><i class="fas fa-clock me-1"></i>Pending</span>
                    <?php endif; ?>
                </td>
                <td class="fw-bold text-success">₹<?= number_format((float)($s['total_fee'] ?? 0), 0) ?></td>
                <td><span class="badge bg-<?= $s['is_active']?'success':'secondary' ?>"><?= $s['is_active']?'Active':'Inactive' ?></span></td>
                <td class="text-end pe-3">
                    <a href="manage-subjects.php?course_id=<?= $s['course_id'] ?>" class="btn btn-sm btn-outline-info" title="Manage Subjects"><i class="fas fa-book"></i></a>
                    <a href="?tab=sub_courses&edit_sub=<?= $s['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?')">
                        <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>">
                        <input type="hidden" name="action" value="delete_sub_item"><input type="hidden" name="id" value="<?= $s['id'] ?>">
                        <button class="btn btn-sm btn-outline-danger"><i class="fas fa-trash"></i></button>
                    </form>
                </td>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
    </div>
</div>

<?php if ($totalPages > 1): ?>
<nav>
    <ul class="pagination justify-content-center">
        <?php for ($i = 1; $i <= $totalPages; $i++): ?>
        <li class="page-item <?= $page === $i ? 'active' : '' ?>">
            <a class="page-link" href="?tab=sub_courses&page=<?= $i ?>&search_sub=<?= urlencode($searchSub) ?>"><?= $i ?></a>
        </li>
        <?php endfor; ?>
    </ul>
</nav>
<?php endif; ?>
<?php endif; ?>

<!-- ═══════════════ CATEGORIES LIST ═══════════════ -->
<?php if ($tab === 'categories'): ?>
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h4 class="fw-bold text-primary mb-0"><i class="fas fa-tags me-2"></i>Course Categories</h4>
        <?php if (!isset($_GET['edit_cat'])): ?>
            <a href="?tab=categories&edit_cat=0" class="btn btn-primary rounded-pill px-4">
                <i class="fas fa-plus me-2"></i>Add New Category
            </a>
        <?php endif; ?>
    </div>

    <?php if (isset($_GET['edit_cat'])): ?>
        <div class="card border-0 shadow-sm rounded-4 mb-4">
            <div class="card-header fw-bold py-3 bg-primary text-white" style="border-radius: 15px 15px 0 0;">
                <i class="fas fa-<?= $editCat?'edit':'plus' ?> me-2"></i><?= $editCat?'Edit Category':'Add New Category' ?>
            </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_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. Information Tech">
                        </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 Thumbnail</label>
                            <input type="file" name="category_image" class="form-control" accept="image/*">
                            <?php if (!empty($editCat['image'])): ?>
                                <div class="mt-2">
                                    <img src="../<?= $editCat['image'] ?>" height="80" class="rounded border shadow-sm">
                                    <p class="small text-muted mt-1">Current Thumbnail</p>
                                </div>
                            <?php endif; ?>
                        </div>
                        <div class="col-12">
                            <label class="fw-bold small">Description (Optional)</label>
                            <textarea name="description" class="form-control" rows="2"><?= htmlspecialchars($editCat['description'] ?? '') ?></textarea>
                        </div>
                    </div>
                    <div class="mt-4">
                        <button type="submit" class="btn btn-primary px-5 fw-bold">Save Category</button>
                        <a href="?tab=categories" class="btn btn-outline-secondary px-4 ms-2">Cancel</a>
                    </div>
                </form>
            </div>
        </div>
    <?php else: ?>
        <div class="row g-4">
            <?php foreach ($categories as $cat): ?>
            <div class="col-md-4 col-lg-3">
                <div class="card h-100 border-0 shadow-sm rounded-4 overflow-hidden course-card position-relative">
                    <a href="?tab=sub_courses&search_sub=<?= urlencode($cat['name']) ?>" class="stretched-link"></a>
                    <div class="ratio ratio-16x9 bg-light">
                        <?php 
                        $img = $cat['image'];
                        if (empty($img)) {
                            // Professional placeholders based on category name
                            $img = 'https://images.unsplash.com/photo-1513258496099-48168024adb0?w=400';
                            if (stripos($cat['name'], 'Nursing') !== false) $img = 'https://images.unsplash.com/photo-1576091160550-2173dba999ef?w=400';
                            if (stripos($cat['name'], 'Technical') !== false) $img = 'https://images.unsplash.com/photo-1581091226825-a6a2a5aee158?w=400';
                            if (stripos($cat['name'], 'Vocational') !== false) $img = 'https://images.unsplash.com/photo-1507537297325-592fe239c50c?w=400';
                            if (stripos($cat['name'], 'Automobile') !== false) $img = 'https://images.unsplash.com/photo-1503376780353-7e6692767b70?w=400';
                            if (stripos($cat['name'], 'Management') !== false) $img = 'https://images.unsplash.com/photo-1552664730-d307ca884978?w=400';
                            if (stripos($cat['name'], 'Tech') !== false) $img = 'https://images.unsplash.com/photo-1518770660439-4636190af475?w=400';
                        } else {
                            $img = '../' . $img;
                        }
                        ?>
                        <img src="<?= $img ?>" class="object-fit-cover" alt="<?= htmlspecialchars($cat['name']) ?>">
                    </div>
                    <div class="card-body p-3">
                        <h6 class="fw-bold mb-1 text-dark"><?= htmlspecialchars($cat['name']) ?></h6>
                        <div class="d-flex justify-content-between align-items-center mt-2 position-relative" style="z-index: 2;">
                            <span class="badge bg-light text-muted border">Order: <?= $cat['display_order'] ?></span>
                            <div class="d-flex gap-2">
                                <a href="?tab=categories&edit_cat=<?= $cat['id'] ?>" class="btn btn-sm btn-light border rounded-pill shadow-sm">
                                    <i class="fas fa-edit me-1"></i>Edit
                                </a>
                                <form method="POST" onsubmit="return confirm('Delete category?')" class="d-inline">
                                    <input type="hidden" name="csrf_token" value="<?= Auth()->generateCSRFToken() ?>">
                                    <input type="hidden" name="action" value="delete_category">
                                    <input type="hidden" name="id" value="<?= $cat['id'] ?>">
                                    <button class="btn btn-sm btn-light border text-danger rounded-pill shadow-sm"><i class="fas fa-trash"></i></button>
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <?php endforeach; ?>
        </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>
function updateDurOptions(typeId, valId) {
    const type = document.getElementById(typeId).value;
    const sel  = document.getElementById(valId);
    const cur  = parseInt(sel.value) || 1;
    sel.innerHTML = '';
    const max = type === 'years' ? 4 : 12;
    for (let i = 1; i <= max; i++) {
        const opt = new Option(i, i);
        if (i === cur && i <= max) opt.selected = true;
        sel.add(opt);
    }
}
function calcTotal(inputClass, targetId) {
    let total = 0;
    document.querySelectorAll('.' + inputClass).forEach(i => total += parseFloat(i.value||0));
    document.getElementById(targetId).textContent = '₹' + total.toLocaleString('en-IN', {minimumFractionDigits:2});
}

// Bulk selection logic
document.addEventListener('DOMContentLoaded', function() {
    const selectAll = document.getElementById('selectAllCourses');
    const courseCheckboxes = document.querySelectorAll('.course-checkbox');
    const bulkActions = document.getElementById('bulkActions');
    const selectedCount = document.getElementById('selectedCount');

    if (selectAll) {
        selectAll.addEventListener('change', function() {
            courseCheckboxes.forEach(cb => {
                cb.checked = selectAll.checked;
                toggleRowHighlight(cb);
            });
            updateBulkVisibility();
        });
    }

    courseCheckboxes.forEach(cb => {
        cb.addEventListener('change', function() {
            toggleRowHighlight(cb);
            updateBulkVisibility();
            
            // Update Select All state
            const allChecked = Array.from(courseCheckboxes).every(c => c.checked);
            const someChecked = Array.from(courseCheckboxes).some(c => c.checked);
            selectAll.checked = allChecked;
            selectAll.indeterminate = someChecked && !allChecked;
        });
    });

    function toggleRowHighlight(checkbox) {
        const row = checkbox.closest('tr');
        if (checkbox.checked) row.classList.add('table-primary');
        else row.classList.remove('table-primary');
    }

    function updateBulkVisibility() {
        const checkedCount = document.querySelectorAll('.course-checkbox:checked').length;
        selectedCount.textContent = checkedCount;
        if (checkedCount > 0) bulkActions.classList.remove('d-none');
        else bulkActions.classList.add('d-none');
    }
});

function bulkAction(action) {
    const selectedIds = Array.from(document.querySelectorAll('.course-checkbox:checked')).map(cb => cb.value);
    if (selectedIds.length === 0) return;
    
    if (confirm(`Are you sure you want to ${action} ${selectedIds.length} selected courses?`)) {
        // We'll add a bulk action POST handler in a future update or use existing ones in a loop
        // For now, let's just alert
        alert('Bulk ' + action + ' for IDs: ' + selectedIds.join(', '));
        // You would typically submit a form with these IDs
    }
}

// Initialize CKEditor
if (document.querySelector('#syllabus_editor')) {
    ClassicEditor
        .create(document.querySelector('#syllabus_editor'), {
            toolbar: [ 'heading', '|', 'bold', 'italic', 'link', 'bulletedList', 'numberedList', 'blockQuote', 'undo', 'redo' ]
        })
        .catch(error => {
            console.error(error);
        });
}

function updateCategoryHint() {
    const sel = document.getElementById('parentCourseSelect');
    const hint = document.getElementById('categoryHint');
    if (sel && hint) {
        const opt = sel.options[sel.selectedIndex];
        hint.value = opt.getAttribute('data-category') || '';
    }
}
// Run once on load
document.addEventListener('DOMContentLoaded', updateCategoryHint);
</script>
</body>
</html>
