<?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='';

// Save attendance via AJAX
if ($_POST['ajax']??''=='save') {
    header('Content-Type: application/json');
    $sid=intval($_POST['student_id']); $tid=intval($_POST['term_id']);
    $td=intval($_POST['total_days']); $ad=intval($_POST['attended_days']);
    if($ad>$td) { echo json_encode(['success'=>false,'msg'=>'Attended > Total']); exit; }
    $conn->query("INSERT INTO result_attendance (student_id,term_id,total_days,attended_days) VALUES ($sid,$tid,$td,$ad) ON DUPLICATE KEY UPDATE total_days=$td,attended_days=$ad");
    echo json_encode(['success'=>true]);
    exit;
}

$selected_class=intval($_GET['class_id']??0); $selected_term=intval($_GET['term_id']??0);
$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");
$terms=$conn->query("SELECT rt.*,rs.session_name FROM result_terms rt JOIN result_sessions rs ON rt.session_id=rs.id ORDER BY rs.is_active DESC,rt.display_order");
$students=[]; $att_map=[];
if($selected_class&&$selected_term){
    $sr=$conn->query("SELECT id,first_name,last_name,roll_no,admission_no FROM result_students WHERE class_id=$selected_class AND is_active=1 ORDER BY roll_no,first_name");
    while($s=$sr->fetch_assoc()) $students[]=$s;
    if(!empty($students)){
        $sids=implode(',',array_column($students,'id'));
        $ar=$conn->query("SELECT * FROM result_attendance WHERE student_id IN($sids) AND term_id=$selected_term");
        while($a=$ar->fetch_assoc()) $att_map[$a['student_id']]=$a;
    }
}
?>
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Attendance | 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-calendar-check me-2" style="color:var(--primary)"></i>Attendance Entry</h4></div>
<div class="card-box mb-3 p-3">
<form method="GET" class="row g-2 align-items-end">
<div class="col-md-4"><label class="form-label fw-600 mb-1" style="font-size:13px">Class</label>
<select name="class_id" class="form-select form-select-sm" required>
<option value="">-- Select Class --</option>
<?php while($c=$classes->fetch_assoc()): ?><option value="<?=$c['id']?>" <?=$selected_class==$c['id']?'selected':''?> ><?=$c['class_name'].' Section '.$c['section']?></option><?php endwhile; ?></select></div>
<div class="col-md-4"><label class="form-label fw-600 mb-1" style="font-size:13px">Term</label>
<select name="term_id" class="form-select form-select-sm" required>
<option value="">-- Select Term --</option>
<?php while($t=$terms->fetch_assoc()): ?><option value="<?=$t['id']?>" <?=$selected_term==$t['id']?'selected':''?> ><?=htmlspecialchars($t['term_name'])?></option><?php endwhile; ?></select></div>
<div class="col-md-4"><button type="submit" class="btn btn-primary btn-sm w-100">Load</button></div>
</form></div>
<?php if($selected_class&&$selected_term&&!empty($students)): ?>
<div class="card-box">
<div class="cb-header"><h6><i class="fas fa-users me-2"></i>Attendance — <?=count($students)?> Students</h6>
<span class="badge bg-success" id="saveStatus">Auto-save ON</span></div>
<div class="table-responsive"><table class="table mb-0">
<thead><tr><th>#</th><th>Student</th><th>Roll</th><th>Total Days</th><th>Days Present</th><th>% Attendance</th><th>Status</th></tr></thead>
<tbody>
<?php foreach($students as $i=>$s):
$a=$att_map[$s['id']]??['total_days'=>0,'attended_days'=>0];
$pct=($a['total_days']>0)?round($a['attended_days']/$a['total_days']*100,1):0; ?>
<tr id="row<?=$s['id']?>">
<td><?=$i+1?></td>
<td class="fw-600"><?=htmlspecialchars($s['first_name'].' '.$s['last_name'])?></td>
<td><?=$s['roll_no']?></td>
<td><input type="number" class="form-control form-control-sm" style="width:80px" value="<?=$a['total_days']?>" min="0" max="365" onchange="saveAtt(<?=$s['id']?>,<?=$selected_term?>,this.value,document.getElementById('att_<?=$s['id']?>').value)" id="td_<?=$s['id']?>"></td>
<td><input type="number" class="form-control form-control-sm" style="width:80px" value="<?=$a['attended_days']?>" min="0" max="365" onchange="saveAtt(<?=$s['id']?>,<?=$selected_term?>,document.getElementById('td_<?=$s['id']?>').value,this.value)" id="att_<?=$s['id']?>"></td>
<td id="pct<?=$s['id']?>"><?=$pct?>%</td>
<td><?php if($pct>=75): ?><span class="badge bg-success">Good</span><?php elseif($pct>=60): ?><span class="badge bg-warning text-dark">Average</span><?php else: ?><span class="badge bg-danger">Low</span><?php endif; ?></td>
</tr>
<?php endforeach; ?>
</tbody></table></div></div>
<?php elseif($selected_class&&$selected_term): ?>
<div class="alert alert-info">No students in this class.</div>
<?php else: ?>
<div class="text-center py-5"><div style="font-size:4rem">📅</div><h5 class="text-muted">Select class and term to enter attendance</h5></div>
<?php endif; ?>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script>
function saveAtt(sid,tid,td,ad){
    fetch('attendance.php',{method:'POST',headers:{'Content-Type':'application/x-www-form-urlencoded'},
    body:`ajax=save&student_id=${sid}&term_id=${tid}&total_days=${td}&attended_days=${ad}`})
    .then(r=>r.json()).then(d=>{
        if(d.success){
            const pct=td>0?Math.round(ad/td*1000)/10:0;
            const el=document.getElementById('pct'+sid);
            if(el) el.textContent=pct+'%';
            document.getElementById('saveStatus').textContent='✅ Saved';
            setTimeout(()=>{document.getElementById('saveStatus').textContent='Auto-save ON'},2000);
        }
    });
}
</script></body></html>
