/home/techb158/workloadmatch.com/api/routes
Edit: /home/techb158/workloadmatch.com/api/routes/coursesessions.php (6705B)
prepare("
SELECT cgs.*, c.Course_Name, g.Group_Name
FROM course_group_schedule cgs
LEFT JOIN Courses c ON c.Course_ID = cgs.Course_ID
LEFT JOIN manager_group_name g ON g.Group_ID = cgs.Group_ID
$whereClause
ORDER BY cgs.Start_Date DESC
");
if ($params) $stmt->bind_param($types, ...$params);
$stmt->execute();
$result = $stmt->get_result();
$items = $result->fetch_all(MYSQLI_ASSOC);
$stmt->close();
Response::success($items);
}
function getCourseSession(?string $courseId, string $sessionId, mysqli $mysqli): void
{
Auth::requireLogin();
$stmt = $mysqli->prepare("
SELECT cgs.*, c.Course_Name, g.Group_Name
FROM course_group_schedule cgs
LEFT JOIN Courses c ON c.Course_ID = cgs.Course_ID
LEFT JOIN manager_group_name g ON g.Group_ID = cgs.Group_ID
WHERE cgs.Schedule_ID = ?
");
$stmt->bind_param('i', $sessionId);
$stmt->execute();
$result = $stmt->get_result();
$item = $result->fetch_assoc();
$stmt->close();
if (!$item) Response::notFound('Session not found');
Response::success($item);
}
function createCourseSession(?string $courseId, ?array $body, mysqli $mysqli): void
{
Auth::requireAnyRole(['admin_profile', 'master_profile', 'manager_profile']);
if (!$courseId) Response::error('Course ID required');
$groupId = $body['Group_ID'] ?? null;
$timeSlot = $body['Time_Slot'] ?? '';
$startDate = $body['Start_Date'] ?? null;
$endDate = $body['End_Date'] ?? null;
$startTime = $body['Start_Time'] ?? null;
$endTime = $body['End_Time'] ?? null;
$assigned = (int)($body['Assigned'] ?? 0);
if (!$groupId || !$startDate || !$endDate) {
Response::validationError(['Group_ID', 'Start_Date', 'End_Date' => 'Required']);
}
$stmt = $mysqli->prepare("INSERT INTO course_group_schedule (Course_ID, Group_ID, Time_Slot, Start_Date, End_Date, Start_Time, End_Time, Assigned) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param('iisssssi', $courseId, $groupId, $timeSlot, $startDate, $endDate, $startTime, $endTime, $assigned);
$stmt->execute();
$newId = $stmt->insert_id;
$stmt->close();
log_activity($mysqli, 'create', 'course_session', $newId, "Course $courseId / Group $groupId", 'Session created via API');
$stmt = $mysqli->prepare("
SELECT cgs.*, c.Course_Name, g.Group_Name
FROM course_group_schedule cgs
LEFT JOIN Courses c ON c.Course_ID = cgs.Course_ID
LEFT JOIN manager_group_name g ON g.Group_ID = cgs.Group_ID
WHERE cgs.Schedule_ID = ?
");
$stmt->bind_param('i', $newId);
$stmt->execute();
$result = $stmt->get_result();
$item = $result->fetch_assoc();
$stmt->close();
Response::created($item);
}
function updateCourseSession(string $sessionId, ?array $body, mysqli $mysqli): void
{
Auth::requireAnyRole(['admin_profile', 'master_profile', 'manager_profile']);
$stmt = $mysqli->prepare("SELECT * FROM course_group_schedule WHERE Schedule_ID = ?");
$stmt->bind_param('i', $sessionId);
$stmt->execute();
$result = $stmt->get_result();
$existing = $result->fetch_assoc();
$stmt->close();
if (!$existing) Response::notFound('Session not found');
$courseId = $body['Course_ID'] ?? $existing['Course_ID'];
$groupId = $body['Group_ID'] ?? $existing['Group_ID'];
$timeSlot = $body['Time_Slot'] ?? $existing['Time_Slot'];
$startDate = $body['Start_Date'] ?? $existing['Start_Date'];
$endDate = $body['End_Date'] ?? $existing['End_Date'];
$startTime = $body['Start_Time'] ?? $existing['Start_Time'];
$endTime = $body['End_Time'] ?? $existing['End_Time'];
$assigned = (int)($body['Assigned'] ?? $existing['Assigned']);
$stmt = $mysqli->prepare("UPDATE course_group_schedule SET Course_ID = ?, Group_ID = ?, Time_Slot = ?, Start_Date = ?, End_Date = ?, Start_Time = ?, End_Time = ?, Assigned = ? WHERE Schedule_ID = ?");
$stmt->bind_param('iisssssii', $courseId, $groupId, $timeSlot, $startDate, $endDate, $startTime, $endTime, $assigned, $sessionId);
$stmt->execute();
$stmt->close();
log_activity($mysqli, 'update', 'course_session', $sessionId, "Course $courseId", 'Session updated via API');
$stmt = $mysqli->prepare("
SELECT cgs.*, c.Course_Name, g.Group_Name
FROM course_group_schedule cgs
LEFT JOIN Courses c ON c.Course_ID = cgs.Course_ID
LEFT JOIN manager_group_name g ON g.Group_ID = cgs.Group_ID
WHERE cgs.Schedule_ID = ?
");
$stmt->bind_param('i', $sessionId);
$stmt->execute();
$result = $stmt->get_result();
$item = $result->fetch_assoc();
$stmt->close();
Response::success($item, 'Session updated');
}
function deleteCourseSession(string $sessionId, mysqli $mysqli): void
{
Auth::requireAnyRole(['admin_profile', 'master_profile']);
$stmt = $mysqli->prepare("SELECT * FROM course_group_schedule WHERE Schedule_ID = ?");
$stmt->bind_param('i', $sessionId);
$stmt->execute();
$result = $stmt->get_result();
$existing = $result->fetch_assoc();
$stmt->close();
if (!$existing) Response::notFound('Session not found');
$stmt = $mysqli->prepare("DELETE FROM course_group_schedule WHERE Schedule_ID = ?");
$stmt->bind_param('i', $sessionId);
$stmt->execute();
$stmt->close();
log_activity($mysqli, 'delete', 'course_session', $sessionId, 'Session deleted via API');
Response::success(null, 'Session deleted');
}