/home/techb158/workloadmatch.com/Teacher
Edit: /home/techb158/workloadmatch.com/Teacher/dashboard_bak1.php (13084B)
prepare("SELECT DISTINCT YEAR(Start_Date) AS Yr, MONTH(Start_Date) AS Mo FROM teacher_course_assignments WHERE Teacher_ID = ? ORDER BY Start_Date DESC");
$stmt->bind_param("s", $Teacher_ID);
$stmt->execute();
$res = $stmt->get_result();
while ($row = $res->fetch_assoc()) {
$sy = (int)$row['Yr'];
$mo = (int)$row['Mo'];
$semYr = ($mo >= 8) ? $sy : $sy - 1;
if (!in_array($semYr, $availYears)) $availYears[] = $semYr;
}
$stmt->close();
// Selected semester (from GET, or auto-detect)
$currentMonth = (int)date('m');
$currentYear = (int)date('Y');
$defaultYear = ($currentMonth >= 8) ? $currentYear : $currentYear - 1;
$semesterYear = isset($_GET['semester_year']) ? (int)$_GET['semester_year'] : $defaultYear;
if (!in_array($semesterYear, $availYears) && !empty($availYears)) $semesterYear = $availYears[0];
$augustFirst = new DateTime("$semesterYear-08-01");
$dayOfWeek = (int)$augustFirst->format('N');
$daysUntilMonday = ($dayOfWeek === 1) ? 0 : (8 - $dayOfWeek) % 7;
$semesterStart = clone $augustFirst;
$semesterStart->modify("+$daysUntilMonday days");
$semesterEnd = new DateTime(($semesterYear + 1) . '-06-30');
$semStartStr = $semesterStart->format('Y-m-d');
$semEndStr = $semesterEnd->format('Y-m-d');
// Teacher profile data
$stmt = $mysqli->prepare("SELECT First_Name, Last_Name, User_Img, Load_Hours, Profile_Status FROM teacher_profile WHERE Teacher_ID = ?");
$stmt->bind_param("s", $Teacher_ID);
$stmt->execute();
$stmt->bind_result($tFirstName, $tLastName, $tImg, $tLoadHours, $tStatus);
$stmt->fetch();
$stmt->close();
$tFullName = $tFirstName . ' ' . $tLastName;
$tImg = $tImg ?: 'avatar.png';
// Status badge
$statusBadge = '';
$statusIcon = '';
switch ($tStatus) {
case 'Online': $statusBadge = 'label-success'; $statusIcon = 'fa-check-circle'; break;
case 'Busy': $statusBadge = 'label-warning'; $statusIcon = 'fa-clock-o'; break;
case 'Unavailable': $statusBadge = 'label-default'; $statusIcon = 'fa-minus-circle'; break;
default: $statusBadge = 'label-danger'; $statusIcon = 'fa-ban';
}
// Preferences count per program
$prefCounts = [1 => 0, 2 => 0];
$stmt = $mysqli->prepare("SELECT Program_ID, COUNT(*) AS cnt FROM teacher_course_preferences WHERE Teacher_ID = ? GROUP BY Program_ID");
$stmt->bind_param("s", $Teacher_ID);
$stmt->execute();
$res = $stmt->get_result();
while ($row = $res->fetch_assoc()) {
$prefCounts[(int)$row['Program_ID']] = (int)$row['cnt'];
}
$stmt->close();
// Program names
$progNames = [];
$res = $mysqli->query("SELECT Program_ID, Program_Name FROM Programs");
while ($row = $res->fetch_assoc()) {
$progNames[(int)$row['Program_ID']] = $row['Program_Name'];
}
// Active assignments count (current semester)
$stmt = $mysqli->prepare("SELECT COUNT(*) FROM teacher_course_assignments WHERE Teacher_ID = ? AND Start_Date >= ? AND End_Date <= ?");
$stmt->bind_param("sss", $Teacher_ID, $semStartStr, $semEndStr);
$stmt->execute();
$stmt->bind_result($totalAssignments);
$stmt->fetch();
$stmt->close();
// Upcoming sessions (next 10)
$upcomingSessions = [];
$stmt = $mysqli->prepare("
SELECT c.Course_Name, tca.Start_Date, tca.Time_Slot, cgs.Start_Time, cgs.End_Time, g.Group_Name, p.Program_Name
FROM teacher_course_assignments tca
JOIN course_group_schedule_main cgs ON tca.Schedule_ID = cgs.Schedule_ID
JOIN Courses c ON cgs.Course_ID = c.Course_ID
JOIN manager_group_name g ON cgs.Group_ID = g.Group_ID
JOIN Programs p ON cgs.Program_ID = p.Program_ID
WHERE tca.Teacher_ID = ? AND tca.Start_Date >= CURDATE()
ORDER BY tca.Start_Date ASC
LIMIT 10
");
$stmt->bind_param("s", $Teacher_ID);
$stmt->execute();
$res = $stmt->get_result();
while ($row = $res->fetch_assoc()) {
$upcomingSessions[] = $row;
}
$stmt->close();
// Total assigned hours (current semester)
$stmt = $mysqli->prepare("
SELECT COALESCE(SUM(cgs.Course_Hours), 0) AS AssignedHours
FROM teacher_course_assignments tca
JOIN course_group_schedule_main cgs ON tca.Schedule_ID = cgs.Schedule_ID
WHERE tca.Teacher_ID = ? AND tca.Start_Date >= ? AND tca.End_Date <= ?
");
$stmt->bind_param("sss", $Teacher_ID, $semStartStr, $semEndStr);
$stmt->execute();
$stmt->bind_result($assignedHours);
$stmt->fetch();
$stmt->close();
$loadPercent = $tLoadHours > 0 ? round(($assignedHours / $tLoadHours) * 100) : 0;
$loadClass = $loadPercent >= 90 ? 'danger' : ($loadPercent >= 70 ? 'warning' : 'success');
?>
CMS | Dashboard
No upcoming sessions scheduled.