/home/techb158/workloadmatch.com/Manager/Inc
NameSizeModeActions
LLMProviders/-0755rm
AddCourse.php25560644editdlrm
AddCourseTime.php19040644editdlrm
AddGroup - Copy.php46330644editdlrm
AddGroup.php56980644editdlrm
AddHoliday.php17720644editdlrm
AddTeacherLevel.php23070644editdlrm
AddUser.php128210644editdlrm
Add_Retake_Remediation.php13340644editdlrm
AIScheduleOptimizer.php119190644editdlrm
Assignment-1.php753800644editdlrm
Assignment-2.php753800644editdlrm
Assignment - BackUp- orgenal.php732720644editdlrm
Assignment - BackUp.php627610644editdlrm
Assignment - Copy (Last File Updated 2025-05-15).php729330644editdlrm
Assignment - Copy.php618260644editdlrm
Assignment.php743080644editdlrm
Assignment_BackUp.php790470644editdlrm
Assign_Teacher_Manual.php209570644editdlrm
Assign_Teacher_Manual_bak.php.disabled205350644editdlrm
Assign_Teacher_Manual_Force_conflict.php211060644editdlrm
Available_Teacher_Report.php23420644editdlrm
BatchScheduler.php35880644editdlrm
CombinedScheduler.php81300644editdlrm
ConflictResolver.php49200644editdlrm
error_log8690644editdlrm
Lockup_to_Assign.php63670644editdlrm
Process_Assignment - Copy.php42330644editdlrm
Process_Assignment.php58130644editdlrm
ScheduleEngine.php55960644editdlrm
ScheduleGenerator.php88110644editdlrm
Schedule_Report_by_Group.php30740644editdlrm
TeacherAssignmentEngine.php124870644editdlrm
Update_Course.php27170644editdlrm
Update_Course_Time.php19470644editdlrm
Update_Group - Copy.php34890644editdlrm
Update_Group.php96570644editdlrm
Update_Holiday.php23570644editdlrm
Update_Profile.php49230644editdlrm
Update_User.php55470644editdlrm
Edit: /home/techb158/workloadmatch.com/Manager/Inc/BatchScheduler.php (3588B)
db = $db; $this->scheduler = new CombinedScheduler($db); if ($provider) { $this->scheduler->setProvider($provider); } } public function setProvider(ProviderInterface $provider): void { $this->scheduler->setProvider($provider); } public function getGroupsForProgram(int $programId): array { $stmt = $this->db->prepare(" SELECT g.Group_ID, g.Group_Name, g.class_days, g.Time_Slot, g.Time_From, g.Time_To, (SELECT COUNT(*) FROM course_group_schedule_main WHERE Group_ID = g.Group_ID AND Assigned = 0) AS unassigned FROM manager_group_name g WHERE g.Program_ID = ? ORDER BY g.Group_Name "); $stmt->bind_param('i', $programId); $stmt->execute(); $groups = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); $stmt->close(); return $groups; } public function getCoursesForProgram(int $programId): array { $stmt = $this->db->prepare("SELECT Course_ID, Course_Name, Course_Time FROM Courses WHERE Program_ID = ?"); $stmt->bind_param('i', $programId); $stmt->execute(); $courses = $stmt->get_result()->fetch_all(MYSQLI_ASSOC); $stmt->close(); return $courses; } public function generateAll(int $programId, array $groupIds, string $startDate, ?string $endDate = null, bool $saveToDb = false, bool $useAi = true): array { $results = []; $totalSessions = 0; $successGroups = 0; $failedGroups = 0; foreach ($groupIds as $groupId) { $courses = $this->getCoursesForProgram($programId); $courseIds = array_column($courses, 'Course_ID'); try { $result = $this->scheduler->generateAndAssign( $programId, (int)$groupId, $startDate, $endDate, $courseIds, [], $saveToDb, $useAi ); $scheduleResult = $result['schedule_result']; $sessionCount = count($scheduleResult['schedule'] ?? []); $totalSessions += $sessionCount; $results[] = [ 'group_id' => (int)$groupId, 'success' => true, 'sessions' => $sessionCount, 'ai_generated' => $scheduleResult['ai_generated'] ?? false, 'saved_entries' => count($result['saved_entries'] ?? []), 'assignments' => $result['assignment_results'] ?? [], 'message' => "Generated $sessionCount sessions", ]; $successGroups++; } catch (Throwable $e) { $results[] = [ 'group_id' => (int)$groupId, 'success' => false, 'message' => $e->getMessage(), ]; $failedGroups++; error_log("BatchScheduler: Group $groupId failed: " . $e->getMessage()); } } return [ 'results' => $results, 'total_groups' => count($groupIds), 'success_count' => $successGroups, 'failed_count' => $failedGroups, 'total_sessions' => $totalSessions, ]; } }