/home/techb158/workloadmatch.com/Manager
NameSizeModeActions
core/-0755rm
css/-0755rm
data/-0755rm
fonts/-0755rm
Inc/-0755rm
js/-0755rm
php/-0755rm
addcourse.php180030644editdlrm
addcoursesession.php144240644editdlrm
addcoursesession_bak.php.disabled208600644editdlrm
addcoursetime.php175640644editdlrm
addgroup.php234650644editdlrm
addgroup1.php204630644editdlrm
addholiday.php182830644editdlrm
addmanager.php190600644editdlrm
addremediation.php181400644editdlrm
addretake.php222840644editdlrm
adduser.php304850644editdlrm
adduser1.php231660644editdlrm
Add_Course_Session.php69310644editdlrm
Add_Course_Session_bak.php.disabled69310644editdlrm
add_event.php20040644editdlrm
Add_Teacher_Unavailability.php17240644editdlrm
AI_Generate_Schedule.php110310644editdlrm
ai_schedule.php199750644editdlrm
ajax_fetch_schedule.php38560644editdlrm
ajax_get_group_slots.php8970644editdlrm
ajax_replace_saturday.php316740644editdlrm
ajax_replace_saturday_backup_latest.php314740644editdlrm
ajax_replace_saturday_bak.php.disabled318120644editdlrm
ajax_swap_courses.php43940644editdlrm
approve_teacher_absence.php22300644editdlrm
approve_teacher_unavailability.php22740644editdlrm
assign_course_group.php181150644editdlrm
assign_course_group1.php207520644editdlrm
Assign_Course_Report.php23180644editdlrm
assign_teacher_legacy.php164900644editdlrm
assign_teacher_manual.php175510644editdlrm
assign_teacher_manual_bak.php.disabled227180644editdlrm
assign_teacher_manual_force_conflicts.php227490644editdlrm
availableteacherreport.php125950644editdlrm
Available_Teacher_Report.php35540644editdlrm
batch_schedule.php95820644editdlrm
calendar.php315020644editdlrm
calendar_schedule.php80860644editdlrm
chat.php164370644editdlrm
chat_bak.php.disabled102650644editdlrm
Check_if_Teacher_Report.php16390644editdlrm
complete_schedule_report_by_teacher.php197990644editdlrm
courseflagtime.php35180644editdlrm
Create_Group_Schedule_Algorithm.php39390644editdlrm
Create_Schedule_Algorithm.php906290644editdlrm
Create_Schedule_Algorithm_1.php424300644editdlrm
Create_Schedule_Algorithm_2.php785320644editdlrm
Create_Schedule_Algorithm_2_combined.php921570644editdlrm
Create_Schedule_Algorithm_2_combined_both_slots.php945460644editdlrm
Create_Schedule_Algorithm_2_combined_both_slots_bak.php.disabled946110644editdlrm
Create_Schedule_Algorithm_2_fixed.php788690644editdlrm
Create_Schedule_Algorithm_3.php895940644editdlrm
Create_Schedule_Algorithm_4.php895940644editdlrm
dashboard.php211030644editdlrm
deletecoursesession.php85910644editdlrm
deleteschedulefromgroup.php174240644editdlrm
delete_course.php6070644editdlrm
delete_course_from_teacher.php51260644editdlrm
delete_course_session_handler.php7910644editdlrm
delete_duplicate_assignments.php25370644editdlrm
delete_event.php12550644editdlrm
delete_group.php19130644editdlrm
delete_holiday.php7430644editdlrm
delete_retake.php13240644editdlrm
delete_schedule_from_group.php19400644editdlrm
delete_teacher_absence.php10150644editdlrm
delete_teacher_level.php8280644editdlrm
delete_teacher_unavailability.php13500644editdlrm
delete_timeslot.php6260644editdlrm
display_schedule.php186620644editdlrm
do_remove_saturday.php64020644editdlrm
duplicate_assignment_report.php94230644editdlrm
edit_event.php16630644editdlrm
examschedulereport.php165100644editdlrm
Exam_Schedule_Report.php27620644editdlrm
export_absences.php12580644editdlrm
fetch_all_scheduled_courses.php63250644editdlrm
fetch_courses.php93730644editdlrm
fetch_courses_for_program.php8150644editdlrm
fetch_courses_for_program_by_schedule.php40470644editdlrm
fetch_courses_teacher_preference.php39540644editdlrm
fetch_course_for_added_group.php10460644editdlrm
fetch_course_hours.php7140644editdlrm
fetch_course_sessions.php14050644editdlrm
fetch_dashboard_charts.php42820644editdlrm
fetch_disabled_dates.php5430644editdlrm
fetch_duplicate_assignments.php49020644editdlrm
fetch_events.php10140644editdlrm
fetch_exist_dates.php11410644editdlrm
fetch_groups_exist_in_schedule.php9590644editdlrm
fetch_groups_for_program.php8710644editdlrm
fetch_groups_for_program_legacy.php7750644editdlrm
fetch_group_timeslot.php8780644editdlrm
fetch_lockup_courses-1-1.php140860644editdlrm
fetch_lockup_courses.php145870644editdlrm
fetch_lockup_courses_1.php136380644editdlrm
fetch_lockup_courses_2.php138500644editdlrm
fetch_lockup_courses_bak.php88990644editdlrm
fetch_reserve_courses.php75670644editdlrm
fetch_retake_courses.php9570644editdlrm
fetch_scheduled_courses.php22540644editdlrm
fetch_schedule_report_by_group.php55540644editdlrm
fetch_teachers_by_group.php48880644editdlrm
fetch_teachers_by_group_legacy.php24210644editdlrm
fetch_teachers_by_program.php18710644editdlrm
fetch_teachers_for_group.php32650644editdlrm
fetch_teacher_assignment.php254050644editdlrm
fetch_teacher_by_course.php39820644editdlrm
fetch_teacher_conflicts-1-1.php57930644editdlrm
fetch_teacher_conflicts.php57660644editdlrm
fetch_teacher_conflicts_only-1-1.php82750644editdlrm
fetch_teacher_conflicts_only-1.php87370644editdlrm
fetch_teacher_conflicts_only.php77250644editdlrm
fetch_teacher_conflicts_only_force_conflicts.php72870644editdlrm
fetch_teacher_conflicts_only_legacy.php67020644editdlrm
fetch_teacher_conflicts_showonly-1-1.php106560644editdlrm
fetch_teacher_conflicts_showonly.php105310644editdlrm
fetch_teacher_load.php16330644editdlrm
fetch_teacher_load_legacy.php11440644editdlrm
fetch_teacher_prefrence_courses.php18480644editdlrm
fetch_teacher_prefrence_courses_accounting.php16470644editdlrm
fetch_workload_data.php45200644editdlrm
fetch_workload_hours-1.php22910644editdlrm
fetch_workload_hours-2.php21470644editdlrm
fetch_workload_hours.php23410644editdlrm
find_replacement-1-1.php186030644editdlrm
find_replacement.php183130644editdlrm
Generate Group Schedule.php173300644editdlrm
Generate Group Schedule 1.php184900644editdlrm
generateschedule.php159460644editdlrm
Generate_Schedule.php347430644editdlrm
generate_schedule_handler.php73750644editdlrm
Generate_Schedule_Script.php307290644editdlrm
getlang.php3510644editdlrm
get_groups_by_program.php6290644editdlrm
get_schedule_ai.php377120644editdlrm
get_schedule_report.php24710644editdlrm
group_schedule_form.php173370644editdlrm
Lockup_to_Assign.php120520644editdlrm
Lockup_to_Assign_bak.php113010644editdlrm
main-header-inc.php77940644editdlrm
main-header.php196560644editdlrm
Preference_Accounting.php98100644editdlrm
preference_accounting.php96030644editdlrm
preference_secretarial.php98100644editdlrm
profile.php209760644editdlrm
remove_saturday_course.php193130644editdlrm
report_absence.php210560644editdlrm
report_absence_1.php63850644editdlrm
reserve_course.php192850644editdlrm
rewrite_ajax_replace_saturday.php131890644editdlrm
rewrite_Create_Schedule_Algorithm.php906720644editdlrm
rewrite_Create_Schedule_Algorithm_2.php912680644editdlrm
save_schedule.php31020644editdlrm
save_schedule_group_course.php263010644editdlrm
save_teacher_preference.php22160644editdlrm
schedulereportbygroup.php180130644editdlrm
schedulereportbyteacher.php194240644editdlrm
scheduleteacherbygroupreport.php374180644editdlrm
scheduleteacherreport.php287880644editdlrm
schedule_report.php179440644editdlrm
Schedule_Report_by_Group.php37410644editdlrm
Schedule_Report_by_Teacher.php946340644editdlrm
swapcourses.php198130644editdlrm
teacher_notes.php189360644editdlrm
teacher_preference.php184960644editdlrm
teacher_preference_by_course.php195870644editdlrm
teacher_report_visibility.php157610644editdlrm
teacher_unavailability.php205770644editdlrm
test.php142780644editdlrm
test1.php224250644editdlrm
unassigncoursereport.php150750644editdlrm
unassign_course.php193240644editdlrm
Unassign_Course_Report.php20580644editdlrm
unscheduledgroupreport.php163960644editdlrm
Unscheduled_Group_Report.php24110644editdlrm
updatecourse.php224540644editdlrm
updatecoursesessionhours.php189050644editdlrm
updatecoursetime.php226700644editdlrm
updategroup.php186190644editdlrm
updateholiday.php233320644editdlrm
updateteacherlevel.php254330644editdlrm
updateteacherunavailability.php118330644editdlrm
UpdateUser.php192610644editdlrm
Update_Course_Hours.php20270644editdlrm
update_reserve_course.php20040644editdlrm
update_teacher_absence.php121350644editdlrm
update_teacher_level25080644editdlrm
update_teacher_level.php24990644editdlrm
useraccesslist.php131450644editdlrm
users.php91710644editdlrm
view_swap_log.php9290644editdlrm
workloadhoursreport.php81820644editdlrm
Edit: /home/techb158/workloadmatch.com/Manager/scheduleteacherreport.php (28788B)
Schedule Teacher Report

Schedule Teacher Report

prepare("SELECT Time_From, Time_To FROM group_slot_mapping WHERE Group_ID = ? AND LOWER(TRIM(Time_Slot)) = LOWER(TRIM(?)) LIMIT 1"); $stmt->bind_param("is", $groupId, $slotFormatted); $stmt->execute(); $res = $stmt->get_result()->fetch_assoc(); $stmt->close(); if ($res) { return date('h:i A', strtotime($res['Time_From'])) . ' - ' . date('h:i A', strtotime($res['Time_To'])); } return '-'; } if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['Teacher_ID'])) { $teacherID = (int) $_POST['Teacher_ID']; $programID = (!empty($_POST['Program_ID']) && $_POST['Program_ID'] !== "all") ? (int) $_POST['Program_ID'] : null; // 1. Load all holidays relevant to this teacher’s scheduled sessions $holidays = []; $res = $mysqli->query(" SELECT Event_Title, Event_Start, Event_End, Event_Color FROM Events "); while ($row = $res->fetch_assoc()) { $start = new DateTime($row['Event_Start']); $end = new DateTime($row['Event_End']); while ($start <= $end) { $d = $start->format('Y-m-d'); $holidays[$d] = [ 'title' => $row['Event_Title'], 'color' => $row['Event_Color'] ?: '#FFD700' ]; $start->modify('+1 day'); } } // 2. Retake Records — pulled from all groups this teacher has $retakes = []; $stmt = $mysqli->prepare(" SELECT rr.Type, rr.Retake_Date FROM retake_records rr JOIN manager_group_name g ON rr.Group_ID = g.Group_ID JOIN schedule_course_for_group scg ON rr.Group_ID = scg.Group_ID JOIN teacher_course_assignments tca ON tca.Schedule_ID = scg.Schedule_ID WHERE tca.Teacher_ID = ? "); $stmt->bind_param("i", $teacherID); $stmt->execute(); $stmt->bind_result($type, $retakeDate); while ($stmt->fetch()) { $retakes[$retakeDate] = $type; } $stmt->close(); // 3. Exam Dates $examDates = []; $query = " SELECT scg.Course_ID, MAX(scg.End_Date) FROM schedule_course_for_group scg JOIN teacher_course_assignments tca ON scg.Schedule_ID = tca.Schedule_ID WHERE tca.Teacher_ID = ? "; if ($programID) { $query .= " AND scg.Program_ID = ?"; } $query .= " GROUP BY scg.Course_ID"; $stmt = $mysqli->prepare($query); if ($programID) { $stmt->bind_param("ii", $teacherID, $programID); } else { $stmt->bind_param("i", $teacherID); } $stmt->execute(); $stmt->bind_result($courseID, $examDate); while ($stmt->fetch()) { $examDates[$courseID] = $examDate; } $stmt->close(); // 4. Sessions Assigned to Teacher $scheduleRows = []; $query = " SELECT scg.Schedule_ID, scg.Course_ID, scg.Course_Name, scg.Reserve_Course, scg.Start_Date, scg.End_Date, gsm.Time_Slot, gsm.Time_From, gsm.Time_To, g.Group_Name FROM schedule_course_for_group AS scg JOIN group_slot_mapping AS gsm ON scg.Group_Slot_ID = gsm.Group_Slot_ID JOIN teacher_course_assignments AS tca ON scg.Schedule_ID = tca.Schedule_ID JOIN manager_group_name AS g ON scg.Group_ID = g.Group_ID WHERE tca.Teacher_ID = ? "; if ($programID) { $query .= " AND scg.Program_ID = ?"; } $query .= " ORDER BY scg.Start_Date, scg.Start_Time"; $stmt = $mysqli->prepare($query); if ($programID) { $stmt->bind_param("ii", $teacherID, $programID); } else { $stmt->bind_param("i", $teacherID); } $stmt->execute(); $stmt->bind_result( $scheduleID, $courseID, $courseName, $reserveCourse, $startDate, $endDate, $slotLabel, $slotFrom, $slotTo, $groupName ); while ($stmt->fetch()) { $scheduleRows[] = [ 'schedule_id' => $scheduleID, 'course_id' => $courseID, 'course_name' => $courseName, 'reserve' => $reserveCourse, 'start_date' => $startDate, 'end_date' => $endDate, 'slot' => $slotLabel, 'from' => $slotFrom, 'to' => $slotTo, 'teacher' => '-', // you can add name if needed 'group' => $groupName ]; } $stmt->close(); // 5. Group by Date $byDate = []; foreach ($scheduleRows as $r) { $period = new DatePeriod( new DateTime($r['start_date']), new DateInterval('P1D'), (new DateTime($r['end_date']))->modify('+1 day') ); foreach ($period as $dt) { $current = $dt->format('Y-m-d'); $byDate[$current][] = $r; } } // 6. Merge All Dates $allDates = array_unique(array_merge(array_keys($byDate), array_keys($holidays), array_keys($retakes))); sort($allDates); // 7. Render Table echo ""; echo ""; foreach ($allDates as $date) { $dayName = date('l', strtotime($date)); $isHoliday = isset($holidays[$date]); $isRetake = isset($retakes[$date]); if ($isHoliday && !isset($byDate[$date])) { $h = $holidays[$date]; echo ""; continue; } if ($isRetake && !isset($byDate[$date])) { echo ""; continue; } foreach ($byDate[$date] as $r) { $isExam = isset($examDates[$r['course_id']]) && $examDates[$r['course_id']] === $date; $type = $isExam ? 'Exam Day' : 'Regular'; $style = $isExam ? "style='background-color:#FFCCCC; font-weight:bold;'" : ""; $timeRange = date("h:i A", strtotime($r['from'])) . " – " . date("h:i A", strtotime($r['to'])); echo ""; } } echo "
Date Time Slot Course Group Time Type
($dayName) $date " . htmlspecialchars($h['title']) . " Holiday
($dayName) $date Retake Session " . htmlspecialchars($retakes[$date]) . "
($dayName) $date {$r['slot']} " . htmlspecialchars($r['course_name']) . " " . htmlspecialchars($r['group']) . " {$timeRange} {$type}
"; } /** if (isset($_POST["Teacher_ID"])) { $Teacher_ID = intval($_POST['Teacher_ID']); $Program_ID_Filter = (!empty($_POST['Program_ID']) && $_POST['Program_ID'] !== "all") ? intval($_POST['Program_ID']) : null; // 1. Assignments $whereAssignments = "WHERE tca.Teacher_ID = ?"; $params = ["i", $Teacher_ID]; if ($Program_ID_Filter) { $whereAssignments .= " AND tca.Program_ID = ?"; $params[0] .= "i"; $params[] = $Program_ID_Filter; } $query = "SELECT tca.*, c.Course_Name, scg.Group_ID, scg.Start_Date, scg.End_Date, scg.Time_Slot, scg.Start_Time, scg.End_Time, g.Group_Name, g.Weekend_Class, g.class_days FROM teacher_course_assignments tca JOIN Courses c ON tca.Course_ID = c.Course_ID JOIN schedule_course_for_group scg ON tca.Schedule_ID = scg.Schedule_ID JOIN manager_group_name g ON scg.Group_ID = g.Group_ID $whereAssignments"; $stmt = $mysqli->prepare($query); if (!$stmt) { die("Prepare failed (Assignments): " . $mysqli->error . "\nQuery: $query"); } $stmt->bind_param(...$params); $stmt->execute(); $assignments = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); $stmt->close(); // 2. Replacements $whereReplacements = "WHERE tra.Replacing_Teacher_ID = ?"; $paramsRep = ["i", $Teacher_ID]; if ($Program_ID_Filter) { $whereReplacements .= " AND c.Program_ID = ?"; $paramsRep[0] .= "i"; $paramsRep[] = $Program_ID_Filter; } $query = "SELECT tra.*, c.Course_Name, scg.Group_ID, scg.Start_Date AS Replacement_From, scg.End_Date AS Replacement_To, scg.Time_Slot, scg.Start_Time, scg.End_Time, g.Group_Name, g.Weekend_Class, g.class_days FROM teacher_replacement_assignments tra JOIN schedule_course_for_group scg ON tra.Schedule_ID = scg.Schedule_ID JOIN Courses c ON scg.Course_ID = c.Course_ID JOIN manager_group_name g ON scg.Group_ID = g.Group_ID $whereReplacements"; $stmt = $mysqli->prepare($query); if (!$stmt) { die("Prepare failed (Replacements): " . $mysqli->error . "\nQuery: $query"); } $stmt->bind_param(...$paramsRep); $stmt->execute(); $replacements = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); $stmt->close(); // 3. Absences $stmt = $mysqli->prepare("SELECT Absence_From, Absence_To FROM teacher_absences WHERE Teacher_ID = ?"); $stmt->bind_param("i", $Teacher_ID); $stmt->execute(); $absences = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); $stmt->close(); // 4. Retake Dates $groupIDs = array_unique(array_column($assignments, 'Group_ID')); $retakeMap = []; foreach ($groupIDs as $groupID) { $stmt = $mysqli->prepare(" SELECT rr.Retake_Date, tsp.Time_Slot, g.Group_Name FROM retake_records rr JOIN time_slot_programs tsp ON rr.time_slot_programs_ID = tsp.time_slot_programs_ID JOIN manager_group_name g ON rr.Group_ID = g.Group_ID WHERE rr.Group_ID = ? "); $stmt->bind_param("i", $groupID); $stmt->execute(); $res = $stmt->get_result(); while ($r = $res->fetch_assoc()) { $retakeMap[$r['Retake_Date']][] = [ 'Time_Slot' => $r['Time_Slot'], 'Group_Name' => $r['Group_Name'] ]; } $stmt->close(); } // 5. Holidays $holidayMap = []; $res = $mysqli->query("SELECT Event_Title, Event_Start, Event_End, Event_Color FROM Events"); while ($event = $res->fetch_assoc()) { $start = new DateTime($event['Event_Start']); $end = (new DateTime($event['Event_End']))->modify('+1 day'); foreach (new DatePeriod($start, new DateInterval('P1D'), $end) as $dt) { $holidayMap[$dt->format('Y-m-d')] = [ 'title' => $event['Event_Title'], 'color' => $event['Event_Color'] ]; } } // 6. Build date range from real dates $dates = array_merge( array_column($assignments, 'Start_Date'), array_column($replacements, 'Replacement_From'), array_column($replacements, 'Replacement_To'), array_keys($retakeMap) ); if (empty($dates)) { echo "
No schedule found for this teacher.
"; exit; } $start = new DateTime(min($dates)); $end = (new DateTime(max($dates)))->modify('+1 day'); $range = new DatePeriod($start, new DateInterval('P1D'), $end); // 7. Display report echo "
"; echo ""; foreach ($range as $date) { $current = $date->format('Y-m-d'); $day = $date->format('l'); $shown = false; // Holiday if (isset($holidayMap[$current])) { echo ""; continue; } // Retake if (isset($retakeMap[$current])) { foreach ($retakeMap[$current] as $retake) { $slotLabel = format_time_slot_label($retake['Time_Slot'], $day); $time = ($day === 'Saturday') ? '09:00 AM - 01:00 PM' : get_group_slot_time($groupIDs[0], $retake['Time_Slot'], $mysqli); $groupName = $retake['Group_Name']; echo ""; } continue; } // Absences foreach ($absences as $abs) { if ($current >= $abs['Absence_From'] && $current <= $abs['Absence_To']) { echo ""; $shown = true; break; } } if ($shown) continue; // Replacements foreach ($replacements as $r) { if ($current >= $r['Replacement_From'] && $current <= $r['Replacement_To']) { $time = format_time_slot($r['Time_Slot'], $r['Start_Time'], $r['End_Time'], $day); $slotLabel = format_time_slot_label($r['Time_Slot'], $day); echo ""; $shown = true; } } if ($shown) continue; // Regular Assignments foreach ($assignments as $a) { if ($current == $a['Start_Date']) { $type = ($current == $a['End_Date']) ? 'Exam Day' : 'Regular'; $bg = ($type === 'Exam Day') ? "style='background-color:#ffeeba'" : ""; $time = format_time_slot($a['Time_Slot'], $a['Start_Time'], $a['End_Time'], $day); $slotLabel = format_time_slot_label($a['Time_Slot'], $day); echo ""; $shown = true; } } // Free day if (!$shown) { echo ""; } } echo "
DateCourseGroupTime SlotTimeType
$current{$holidayMap[$current]['title']}---Holiday
$current Retake $groupName $slotLabel $time Retake
$currentTeacher Absent---Absent
$current{$r['Course_Name']}{$r['Group_Name']}{$slotLabel}{$time}Replacement
$current{$a['Course_Name']}{$a['Group_Name']}{$slotLabel}{$time}{$type}
$currentNo Class---Free
"; } **/ ?>