/home/techb158/workloadmatch.com/workloadmatch.com/BackUp/Manager
Edit: /home/techb158/workloadmatch.com/workloadmatch.com/BackUp/Manager/ajax_swap_courses.php (4279B)
false, 'msg' => 'Invalid token']);
exit;
}
if ($schedule1 <= 0 || $schedule2 <= 0 || $schedule1 === $schedule2) {
echo json_encode(['ok' => false, 'msg' => 'Invalid course selections']);
exit;
}
try {
$mysqli->begin_transaction();
// Fetch schedule1 data
$stmtA = $mysqli->prepare("
SELECT scg.Course_ID, scg.Course_Name, cgs.Program_ID, cgs.Group_ID
FROM Schedule_Course_for_Group scg
JOIN Course_Group_Schedule_Main cgs ON scg.Schedule_ID = cgs.Schedule_ID
WHERE scg.Schedule_ID = ?
");
$stmtA->bind_param("i", $schedule1);
$stmtA->execute();
$rowA = $stmtA->get_result()->fetch_assoc();
$stmtA->close();
// Fetch schedule2 data
$stmtB = $mysqli->prepare("
SELECT scg.Course_ID, scg.Course_Name, cgs.Program_ID, cgs.Group_ID
FROM Schedule_Course_for_Group scg
JOIN Course_Group_Schedule_Main cgs ON scg.Schedule_ID = cgs.Schedule_ID
WHERE scg.Schedule_ID = ?
");
$stmtB->bind_param("i", $schedule2);
$stmtB->execute();
$rowB = $stmtB->get_result()->fetch_assoc();
$stmtB->close();
if (!$rowA || !$rowB) {
throw new Exception("One or both schedules not found.");
}
// === Swap in Course_Group_Schedule_Main ===
$stmtMain = $mysqli->prepare("UPDATE Course_Group_Schedule_Main SET Course_ID = ? WHERE Schedule_ID = ?");
$stmtMain->bind_param("ii", $rowB['Course_ID'], $schedule1);
$stmtMain->execute();
$stmtMain->bind_param("ii", $rowA['Course_ID'], $schedule2);
$stmtMain->execute();
$stmtMain->close();
// === Swap Course_ID + Course_Name in Schedule_Course_for_Group ===
$stmtSCFG = $mysqli->prepare("UPDATE Schedule_Course_for_Group SET Course_ID = ?, Course_Name = ? WHERE Schedule_ID = ?");
$stmtSCFG->bind_param("isi", $rowB['Course_ID'], $rowB['Course_Name'], $schedule1);
$stmtSCFG->execute();
$stmtSCFG->bind_param("isi", $rowA['Course_ID'], $rowA['Course_Name'], $schedule2);
$stmtSCFG->execute();
$stmtSCFG->close();
// === Get Teacher_IDs ===
$getTeacherA = $mysqli->prepare("SELECT Teacher_ID FROM Teacher_Course_Assignments WHERE Schedule_ID = ?");
$getTeacherA->bind_param("i", $schedule1);
$getTeacherA->execute();
$teacherA = $getTeacherA->get_result()->fetch_assoc()['Teacher_ID'] ?? null;
$getTeacherA->close();
$getTeacherB = $mysqli->prepare("SELECT Teacher_ID FROM Teacher_Course_Assignments WHERE Schedule_ID = ?");
$getTeacherB->bind_param("i", $schedule2);
$getTeacherB->execute();
$teacherB = $getTeacherB->get_result()->fetch_assoc()['Teacher_ID'] ?? null;
$getTeacherB->close();
// === Swap Teacher_IDs ===
if ($teacherA !== null && $teacherB !== null) {
$updateTeacher = $mysqli->prepare("
UPDATE Teacher_Course_Assignments
SET Teacher_ID = ?, Course_ID = ?
WHERE Schedule_ID = ? AND Program_ID = ? AND Group_ID = ?
");
$updateTeacher->bind_param("iiiii", $teacherB, $rowB['Course_ID'], $schedule1, $rowA['Program_ID'], $rowA['Group_ID']);
$updateTeacher->execute();
$updateTeacher->bind_param("iiiii", $teacherA, $rowA['Course_ID'], $schedule2, $rowB['Program_ID'], $rowB['Group_ID']);
$updateTeacher->execute();
$updateTeacher->close();
}
// === Log the swap ===
$log = $mysqli->prepare("INSERT INTO Schedule_Swap_Log (Schedule_ID_1, Schedule_ID_2, Swapped_By) VALUES (?, ?, ?)");
$user = $_SESSION['username'] ?? 'admin';
$log->bind_param("iis", $schedule1, $schedule2, $user);
$log->execute();
$log->close();
$mysqli->commit();
echo json_encode(['ok' => true]);
} catch (Throwable $e) {
$mysqli->rollback();
error_log("Swap failed: " . $e->getMessage());
echo json_encode(['ok' => false, 'msg' => 'Swap failed: ' . $e->getMessage()]);
}
?>