/home/techb158/workloadmatch.com/workloadmatch.com/Manager
Edit: /home/techb158/workloadmatch.com/workloadmatch.com/Manager/Generate Group Schedule 1.php (18121B)
prepare("SELECT Program_ID, Program_Name FROM Programs");
$stmtGroup->execute();
$groupData = $stmtGroup->get_result()->fetch_assoc();
$stmtGroup->close();
?>
Generate Group Schedule
prepare("SELECT Time_Slot, Time_From, Time_To, class_days FROM Manager_Group_Name WHERE Program_ID = ? AND Group_ID = ?");
$stmt->bind_param("ii", $Program_ID, $Group_ID);
$stmt->execute();
$groupData = $stmt->get_result()->fetch_assoc();
$stmt->close();
if (!$groupData) die("Invalid Group");
$timeSlots = explode(',', $groupData['Time_Slot']);
$classDays = array_map('trim', explode(',', $groupData['class_days']));
// Build calendar date range excluding holidays and retakes
$calendar = build_schedule_calendar($Start_Date, $End_Date, $classDays, $timeSlots, $mysqli, $Program_ID, $Group_ID);
// Sort courses if priority specified
if ($priorityCourse) {
usort($selectedCourses, function($a, $b) use ($priorityCourse) {
return ($a == $priorityCourse) ? -1 : 1;
});
}
$scheduleOutput = [];
$courseIndex = 0;
foreach ($selectedCourses as $courseID) {
$sessionsNeeded = intval($courseSessions[$courseID]);
$sessionsAssigned = 0;
foreach ($calendar as $date => $slots) {
foreach ($slots as $slot => $status) {
if ($status === 'free' && $sessionsAssigned < $sessionsNeeded) {
$scheduleOutput[] = [
'date' => $date,
'slot' => $slot,
'course_id' => $courseID
];
$calendar[$date][$slot] = 'occupied';
$sessionsAssigned++;
}
}
if ($sessionsAssigned >= $sessionsNeeded) break;
}
}
// Output schedule result
echo "
Generated Schedule
";
echo "
| Date | Time Slot | Course |
";
foreach ($scheduleOutput as $row) {
$date = $row['date'];
$slot = $row['slot'];
$courseID = $row['course_id'];
$course = $mysqli->query("SELECT Course_Name FROM Courses WHERE Course_ID = $courseID")->fetch_assoc();
echo "| $date | $slot | " . htmlspecialchars($course['Course_Name']) . " |
";
}
echo "
";
}
?>