/home/techb158/workloadmatch.com/workloadmatch.com/BackUp/Manager
Edit: /home/techb158/workloadmatch.com/workloadmatch.com/BackUp/Manager/find_replacement-1.php (16075B)
prepare("SELECT * FROM teacher_absences WHERE Absence_ID = ?");
$stmt->bind_param("i", $absence_id);
$stmt->execute();
$absence = $stmt->get_result()->fetch_assoc();
$stmt->close();
if (!$absence) {
die("Absence record not found.");
}
$absent_teacher_id = $absence['Teacher_ID'];
$absence_from = $absence['Absence_From'];
$absence_to = $absence['Absence_To'];
// Get affected schedules
$scheduleQuery = "SELECT * FROM teacher_course_assignments
WHERE Teacher_ID = ?
AND Start_Date <= ?
AND End_Date >= ?";
$stmt = $mysqli->prepare($scheduleQuery);
$stmt->bind_param("iss", $absent_teacher_id, $absence_to, $absence_from);
$stmt->execute();
$affectedSchedules = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
$stmt->close();
// Get all available teachers with access
$teachers = [];
$res = $mysqli->query("SELECT Teacher_ID, First_Name, Last_Name, Time_Slot, Load_Hours, User_Access FROM teacher_profile WHERE User_Access = 1");
while ($row = $res->fetch_assoc()) {
$teachers[$row['Teacher_ID']] = $row;
}
// Filter based on preferences and availability
$availableReplacers = [];
foreach ($affectedSchedules as $schedule) {
foreach ($teachers as $teacher) {
if ($teacher['Teacher_ID'] == $schedule['Teacher_ID']) continue;
// Check time slot preference
$slots = array_map('trim', explode(',', $teacher['Time_Slot']));
if (!in_array($schedule['Time_Slot'], $slots)) continue;
// Check course preference
$prefQuery = "SELECT COUNT(*) AS pref FROM Teacher_Course_Preferences WHERE Teacher_ID = ? AND Course_ID = ?";
$stmtPref = $mysqli->prepare($prefQuery);
$stmtPref->bind_param("ii", $teacher['Teacher_ID'], $schedule['Course_ID']);
$stmtPref->execute();
$prefResult = $stmtPref->get_result()->fetch_assoc();
$stmtPref->close();
if ($prefResult['pref'] == 0) continue;
// Check availability (no overlapping schedule)
$checkQuery = "SELECT COUNT(*) AS cnt FROM teacher_course_assignments
WHERE Teacher_ID = ? AND Time_Slot = ?
AND (? <= End_Date AND ? >= Start_Date)";
$stmtCheck = $mysqli->prepare($checkQuery);
$stmtCheck->bind_param("isss", $teacher['Teacher_ID'], $schedule['Time_Slot'], $schedule['Start_Date'], $schedule['End_Date']);
$stmtCheck->execute();
$count = $stmtCheck->get_result()->fetch_assoc()['cnt'];
$stmtCheck->close();
if ($count == 0) {
$availableReplacers[$schedule['Schedule_ID']][] = $teacher;
}
}
}
// Handle form submission
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['replace_teacher_id'], $_POST['schedule_id'])) {
$replacing_teacher_id = intval($_POST['replace_teacher_id']);
$schedule_id = intval($_POST['schedule_id']);
$check = $mysqli->prepare("SELECT COUNT(*) as cnt FROM teacher_replacement_assignments WHERE Schedule_ID = ?");
$check->bind_param("i", $schedule_id);
$check->execute();
$exists = $check->get_result()->fetch_assoc()['cnt'];
$check->close();
if ($exists > 0) {
$error = "A replacement for this schedule already exists.";
} else {
$stmt = $mysqli->prepare("INSERT INTO teacher_replacement_assignments
(Absent_Teacher_ID, Replacing_Teacher_ID, Schedule_ID, Replacement_From, Replacement_To)
VALUES (?, ?, ?, ?, ?)");
$stmt->bind_param("iiiss", $absent_teacher_id, $replacing_teacher_id, $schedule_id, $absence_from, $absence_to);
$stmt->execute();
$stmt->close();
$success = "Replacement assigned successfully.";
}
}
?>
Find Replacement
"; ?>