/home/techb158/workloadmatch.com/Manager
Edit: /home/techb158/workloadmatch.com/Manager/report_absence.php (21056B)
isTokenValid($_POST['_csrf'])) {
set_flash_msg('Session expired. Please try again.', 'danger');
header("Location: " . BASE_URL . "/report_absence");
exit();
}
$Teacher_ID = intval($_POST['Teacher_ID']);
$Absence_From = $_POST['Absence_From'];
$Absence_To = $_POST['Absence_To'];
$Reason = !empty($_POST['Reason']) ? $_POST['Reason'] : 'Sick Leave';
$stmt = $mysqli->prepare("INSERT INTO teacher_absences (Teacher_ID, Absence_From, Absence_To, Reason, status) VALUES (?, ?, ?, ?, 'confirmed')");
$stmt->bind_param("isss", $Teacher_ID, $Absence_From, $Absence_To, $Reason);
if ($stmt->execute()) {
set_flash_msg('Absence reported successfully. You can now find a replacement.', 'success');
} else {
set_flash_msg('Failed to report absence.', 'danger');
}
$stmt->close();
header("Location: " . BASE_URL . "/report_absence");
exit();
}
?>
Course Management System | Report Teacher Absence
".htmlspecialchars($success, ENT_QUOTES, 'UTF-8')."
"; ?>
".htmlspecialchars($error, ENT_QUOTES, 'UTF-8')."
"; ?>
| Teacher |
From |
To |
Reason |
Status |
Assigned To |
Action |
Approve / Reject |
Delete |
query("
SELECT
a.Absence_ID, a.Absence_From, a.Absence_To, a.Reason, a.status,
t.First_Name AS AbsentFirst, t.Last_Name AS AbsentLast, t.Email AS AbsentEmail,
rtp.First_Name AS ReplacerFirst, rtp.Last_Name AS ReplacerLast,
tra.Replacing_Teacher_ID
FROM teacher_absences a
JOIN teacher_profile t ON t.Teacher_ID = a.Teacher_ID
LEFT JOIN teacher_replacement_assignments tra
ON tra.Absent_Teacher_ID = a.Teacher_ID
AND a.Absence_From = tra.Replacement_From
AND a.Absence_To = tra.Replacement_To
LEFT JOIN teacher_profile rtp ON rtp.Teacher_ID = tra.Replacing_Teacher_ID
GROUP BY a.Absence_ID
ORDER BY a.Absence_From DESC
");
while ($row = $absences->fetch_assoc()) {
$assignedTo = !empty($row['ReplacerFirst'])
? $row['ReplacerFirst'] . ' ' . $row['ReplacerLast']
: 'Not Assigned';
$s = $row['status'] ?? 'pending';
$badge = 'default';
if ($s == 'pending') $badge = 'warning';
elseif ($s == 'confirmed') $badge = 'success';
elseif ($s == 'rejected') $badge = 'danger';
$name = htmlspecialchars($row['AbsentFirst'] . ' ' . $row['AbsentLast'], ENT_QUOTES, 'UTF-8');
$email = htmlspecialchars($row['AbsentEmail'] ?? '', ENT_QUOTES, 'UTF-8');
echo '';
echo '| ' . $name . ' | ';
echo '' . htmlspecialchars($row['Absence_From']) . ' | ';
echo '' . htmlspecialchars($row['Absence_To']) . ' | ';
echo '' . htmlspecialchars($row['Reason']) . ' | ';
echo '' . ucfirst($s) . ' | ';
echo '' . $assignedTo . ' | ';
echo '';
echo 'Find Replacement';
echo ' Edit';
echo ' | ';
echo '';
if ($s == 'pending'):
echo '';
echo ' ';
else:
echo '--';
endif;
echo ' | ';
echo ' | ';
echo '
';
}
?>
| Teacher |
From |
To |
Reason |
Status |
Assigned To |
Action |
Approve / Reject |
Delete |