/home/techb158/workloadmatch.com/api/routes
Edit: /home/techb158/workloadmatch.com/api/routes/dashboard.php (6232B)
'master_profile',
'managers' => 'manager_profile',
'teachers' => 'teacher_profile',
'courses' => 'Courses',
'groups' => 'manager_group_name',
'programs' => 'Programs',
];
foreach ($tables as $key => $table) {
$r = $mysqli->query("SELECT COUNT(*) AS c FROM $table");
$counts[$key] = (int)$r->fetch_assoc()['c'];
$r->close();
}
// Active users (logged in today)
$today = date('Y-m-d');
$r = $mysqli->query("SELECT COUNT(*) AS c FROM teacher_profile WHERE Login_Date LIKE '$today%'");
$counts['active_teachers'] = (int)$r->fetch_assoc()['c'];
$r->close();
// Unassigned schedules
$r = $mysqli->query("SELECT COUNT(*) AS c FROM schedule_course_for_group WHERE Assigned = 0");
$counts['unassigned'] = (int)$r->fetch_assoc()['c'];
$r->close();
// Recent activity
$activities = [];
$r = $mysqli->query("SELECT * FROM activity_logs ORDER BY created_at DESC LIMIT 10");
while ($row = $r->fetch_assoc()) {
$activities[] = $row;
}
$r->close();
return [
'counts' => $counts,
'activities' => $activities,
];
}
function getMasterDashboard(mysqli $mysqli, string $userId): array
{
$r = $mysqli->query("SELECT Admin_ID FROM master_profile WHERE Master_ID = $userId");
$adminId = (int)$r->fetch_assoc()['Admin_ID'];
$r->close();
$counts = [];
$r = $mysqli->query("SELECT COUNT(*) AS c FROM manager_profile WHERE Master_ID = $userId");
$counts['managers'] = (int)$r->fetch_assoc()['c'];
$r->close();
$r = $mysqli->query("SELECT COUNT(*) AS c FROM teacher_profile WHERE Master_ID = $userId");
$counts['teachers'] = (int)$r->fetch_assoc()['c'];
$r->close();
$r = $mysqli->query("SELECT COUNT(*) AS c FROM manager_group_name WHERE Master_ID = $userId");
$counts['groups'] = (int)$r->fetch_assoc()['c'];
$r->close();
$r = $mysqli->query("SELECT COUNT(*) AS c FROM schedule_course_for_group s JOIN manager_group_name g ON g.Group_ID = s.Group_ID WHERE g.Master_ID = $userId AND s.Assigned = 0");
$counts['unassigned'] = (int)$r->fetch_assoc()['c'];
$r->close();
return ['counts' => $counts];
}
function getManagerDashboard(mysqli $mysqli): array
{
$managerId = Auth::getEffectiveManagerId();
$counts = [];
$r = $mysqli->query("SELECT COUNT(*) AS c FROM teacher_profile WHERE Manager_ID = $managerId");
$counts['teachers'] = (int)$r->fetch_assoc()['c'];
$r->close();
$r = $mysqli->query("SELECT COUNT(*) AS c FROM manager_group_name WHERE Manager_ID = $managerId");
$counts['groups'] = (int)$r->fetch_assoc()['c'];
$r->close();
$r = $mysqli->query("SELECT COUNT(DISTINCT CONCAT(scg.Course_ID, '-', scg.Group_ID)) AS c FROM schedule_course_for_group scg JOIN manager_group_name mgn ON mgn.Group_ID = scg.Group_ID WHERE scg.Assigned = 0 AND mgn.Manager_ID = $managerId");
$counts['unassigned'] = (int)$r->fetch_assoc()['c'];
$r->close();
$r = $mysqli->query("SELECT COUNT(*) AS c FROM teacher_course_assignments tca JOIN teacher_profile tp ON tp.Teacher_ID = tca.Teacher_ID WHERE tp.Manager_ID = $managerId");
$counts['assignments'] = (int)$r->fetch_assoc()['c'];
$r->close();
// Unread messages
$r = $mysqli->query("SELECT COUNT(*) AS c FROM chat_messages WHERE receiver_id = $managerId AND receiver_type = 'manager' AND is_read = 0");
$counts['unread_messages'] = (int)$r->fetch_assoc()['c'];
$r->close();
// Today's schedule count
$today = date('Y-m-d');
$r = $mysqli->query("SELECT COUNT(*) AS c FROM schedule_course_for_group scg JOIN manager_group_name g ON g.Group_ID = scg.Group_ID WHERE g.Manager_ID = $managerId AND scg.Start_Date = '$today'");
$counts['today_schedules'] = (int)$r->fetch_assoc()['c'];
$r->close();
return ['counts' => $counts];
}
function getTeacherDashboard(mysqli $mysqli, string $userId): array
{
$counts = [];
// Today's courses
$today = date('Y-m-d');
$r = $mysqli->query("SELECT COUNT(*) AS c FROM schedule_course_for_group scg JOIN teacher_course_assignments tca ON tca.Schedule_ID = scg.Schedule_ID WHERE tca.Teacher_ID = $userId AND scg.Start_Date = '$today'");
$counts['today_courses'] = (int)$r->fetch_assoc()['c'];
$r->close();
// Unread messages
$r = $mysqli->query("SELECT COUNT(*) AS c FROM chat_messages WHERE receiver_id = $userId AND receiver_type = 'teacher' AND is_read = 0");
$counts['unread_messages'] = (int)$r->fetch_assoc()['c'];
$r->close();
// Total assignments
$r = $mysqli->query("SELECT COUNT(*) AS c FROM teacher_course_assignments WHERE Teacher_ID = $userId");
$counts['total_assignments'] = (int)$r->fetch_assoc()['c'];
$r->close();
// Upcoming courses (next 7 days)
$nextWeek = date('Y-m-d', strtotime('+7 days'));
$r = $mysqli->query("SELECT scg.*, c.Course_Name, c.Course_Code FROM schedule_course_for_group scg JOIN teacher_course_assignments tca ON tca.Schedule_ID = scg.Schedule_ID JOIN Courses c ON c.Course_ID = scg.Course_ID WHERE tca.Teacher_ID = $userId AND scg.Start_Date >= '$today' AND scg.Start_Date <= '$nextWeek' ORDER BY scg.Start_Date");
$upcoming = $r->fetch_all(MYSQLI_ASSOC);
$r->close();
return [
'counts' => $counts,
'upcoming' => $upcoming,
];
}