<?php
session_start();
if (!isset($_SESSION['admin_logged_in'])) { header('Location: ../index.php'); exit(); }
if (file_exists(__DIR__ . '/../../db.php')) {
    require_once __DIR__ . '/../../db.php';
} elseif (file_exists(__DIR__ . '/../db.php')) {
    require_once __DIR__ . '/../db.php';
}

if (file_exists(__DIR__ . '/../../result_db_setup.php')) {
    require_once __DIR__ . '/../../result_db_setup.php';
} elseif (file_exists(__DIR__ . '/../result_db_setup.php')) {
    require_once __DIR__ . '/../result_db_setup.php';
} elseif (file_exists(__DIR__ . '/result_db_setup.php')) {
    require_once __DIR__ . '/result_db_setup.php';
}
setupResultTables($conn);
$msg=''; $err='';

if ($_POST['action']??''=='add') {
    $cid=intval($_POST['class_id']); $sid=intval($_POST['subject_id']);
    $tc=$conn->real_escape_string(trim($_POST['teacher_name']));
    $mm=intval($_POST['max_marks']); $pm=intval($_POST['pass_marks']);
    $conn->query("INSERT IGNORE INTO result_class_subject (class_id,subject_id,teacher_name,max_marks,pass_marks) VALUES ($cid,$sid,'$tc',$mm,$pm)");
    if($conn->affected_rows>0) $msg="Mapping added!"; else $err="Already exists or error: ".$conn->error;
}
if ($_POST['action']??''=='bulk') {
    $cid=intval($_POST['class_id']);
    $sids=$_POST['subject_ids']??[];
    foreach($sids as $sid) {
        $sid=intval($sid);
        $conn->query("INSERT IGNORE INTO result_class_subject (class_id,subject_id,max_marks,pass_marks) VALUES ($cid,$sid,100,33)");
    }
    $msg="Bulk mapping done!";
}
if (isset($_GET['del'])) { $conn->query("DELETE FROM result_class_subject WHERE id=".intval($_GET['del'])); $msg="Deleted."; }

$filter_class=intval($_GET['class_id']??0);
$where=$filter_class?"WHERE cs.class_id=$filter_class":"";
$mappings=$conn->query("SELECT cs.*,c.class_name,c.section,s.subject_name,s.grading_type,s.is_scholastic FROM result_class_subject cs JOIN result_classes c ON cs.class_id=c.id JOIN result_subjects s ON cs.subject_id=s.id $where ORDER BY c.numeric_level,c.section,s.subject_name");
$classes=$conn->query("SELECT rc.*,rs.session_name FROM result_classes rc JOIN result_sessions rs ON rc.session_id=rs.id ORDER BY rs.is_active DESC,rc.numeric_level,rc.section");
$subjects=$conn->query("SELECT * FROM result_subjects WHERE is_active=1 ORDER BY is_scholastic DESC,subject_name");
?>
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Class-Subject Map | Result</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<?php include __DIR__.'/_sidebar_style.php'; ?></head><body>
<?php include __DIR__.'/_sidebar.php'; ?>
<div class="main">
<div class="topbar"><h4><i class="fas fa-link me-2" style="color:var(--primary)"></i>Class-Subject Mapping</h4>
<div class="d-flex gap-2">
<button class="btn btn-success btn-sm" data-bs-toggle="modal" data-bs-target="#bulkModal"><i class="fas fa-layer-group me-1"></i>Bulk Map</button>
<button class="btn btn-primary btn-sm" data-bs-toggle="modal" data-bs-target="#addModal"><i class="fas fa-plus me-1"></i>Single Map</button>
</div></div>
<?php if($msg): ?><div class="alert alert-success"><?=$msg?></div><?php endif; ?>
<?php if($err): ?><div class="alert alert-warning"><?=$err?></div><?php endif; ?>
<div class="card-box mb-3 p-3">
<form method="GET" class="d-flex gap-2 align-items-center">
<select name="class_id" class="form-select form-select-sm" style="width:auto" onchange="this.form.submit()">
<option value="">All Classes</option>
<?php $classes->data_seek(0); while($c=$classes->fetch_assoc()): ?>
<option value="<?=$c['id']?>" <?=$filter_class==$c['id']?'selected':''?>><?=$c['class_name'].' '.$c['section']?></option>
<?php endwhile; ?>
</select>
<a href="class_subjects.php" class="btn btn-outline-secondary btn-sm">Clear</a>
</form></div>
<div class="card-box"><table class="table mb-0">
<thead><tr><th>#</th><th>Class</th><th>Subject</th><th>Type</th><th>Teacher</th><th>Max Marks</th><th>Pass Marks</th><th>Actions</th></tr></thead>
<tbody><?php $i=0; while($m=$mappings->fetch_assoc()): $i++; ?>
<tr><td><?=$i?></td>
<td><?=$m['class_name'].' '.$m['section']?></td>
<td class="fw-600"><?=htmlspecialchars($m['subject_name'])?></td>
<td><?=$m['is_scholastic']?'<span class="badge bg-primary">Scholastic</span>':'<span class="badge bg-warning text-dark">Co-Sch</span>'?></td>
<td><?=htmlspecialchars($m['teacher_name']?:'--')?></td>
<td><?=$m['max_marks']?></td><td><?=$m['pass_marks']?></td>
<td><a href="?del=<?=$m['id']?>" class="btn btn-sm btn-outline-danger" style="font-size:11px" onclick="return confirm('Remove?')"><i class="fas fa-unlink"></i></a></td>
</tr><?php endwhile; ?>
<?php if($i==0): ?><tr><td colspan="8" class="text-center py-4 text-muted">No mappings found.</td></tr><?php endif; ?>
</tbody></table></div></div>
<!-- Add Modal -->
<div class="modal fade" id="addModal" tabindex="-1"><div class="modal-dialog"><div class="modal-content">
<div class="modal-header" style="background:linear-gradient(135deg,var(--primary),#1a6ba0);color:#fff"><h5 class="modal-title">Map Subject to Class</h5><button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button></div>
<form method="POST"><input type="hidden" name="action" value="add"><div class="modal-body">
<div class="mb-3"><label class="form-label fw-600">Class *</label><select name="class_id" class="form-select" required>
<?php $classes->data_seek(0); while($c=$classes->fetch_assoc()): ?>
<option value="<?=$c['id']?>"><?=$c['class_name'].' Section '.$c['section'].' ['.$c['session_name'].']'?></option>
<?php endwhile; ?></select></div>
<div class="mb-3"><label class="form-label fw-600">Subject *</label><select name="subject_id" class="form-select" required>
<?php $subjects->data_seek(0); while($s=$subjects->fetch_assoc()): ?>
<option value="<?=$s['id']?>"><?=htmlspecialchars($s['subject_name'])?> (<?=$s['grading_type']?>)</option>
<?php endwhile; ?></select></div>
<div class="mb-3"><label class="form-label fw-600">Teacher Name</label><input type="text" name="teacher_name" class="form-control" placeholder="Assigned teacher"></div>
<div class="row g-3"><div class="col-6"><label class="form-label fw-600">Max Marks</label><input type="number" name="max_marks" class="form-control" value="100"></div>
<div class="col-6"><label class="form-label fw-600">Pass Marks</label><input type="number" name="pass_marks" class="form-control" value="33"></div></div>
</div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary">Map</button></div></form></div></div></div>
<!-- Bulk Modal -->
<div class="modal fade" id="bulkModal" tabindex="-1"><div class="modal-dialog modal-lg"><div class="modal-content">
<div class="modal-header" style="background:linear-gradient(135deg,#059669,#10b981);color:#fff"><h5 class="modal-title">Bulk Map Subjects to Class</h5><button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button></div>
<form method="POST"><input type="hidden" name="action" value="bulk"><div class="modal-body">
<div class="mb-3"><label class="form-label fw-600">Select Class *</label><select name="class_id" class="form-select" required>
<?php $classes->data_seek(0); while($c=$classes->fetch_assoc()): ?>
<option value="<?=$c['id']?>"><?=$c['class_name'].' Section '.$c['section']?></option>
<?php endwhile; ?></select></div>
<label class="form-label fw-600">Select Subjects (hold Ctrl/Cmd for multiple)</label>
<div class="row g-2" style="max-height:250px;overflow-y:auto">
<?php $subjects->data_seek(0); while($s=$subjects->fetch_assoc()): ?>
<div class="col-md-6">
<div class="form-check">
<input type="checkbox" class="form-check-input" name="subject_ids[]" value="<?=$s['id']?>" id="sub<?=$s['id']?>">
<label class="form-check-label" for="sub<?=$s['id']?>"><?=htmlspecialchars($s['subject_name'])?> <small class="text-muted">(<?=$s['grading_type']?>)</small></label>
</div></div>
<?php endwhile; ?>
</div>
</div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-success">Bulk Map Selected</button></div></form></div></div></div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script></body></html>
