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');
}
$query = "
SELECT
g.Group_ID,
g.Group_Name,
MIN(s.Start_Date) AS Start_Date,
MAX(s.End_Date) AS End_Date,
GROUP_CONCAT(DISTINCT s.Schedule_ID ORDER BY s.Schedule_ID) AS Schedule_IDs
FROM course_group_schedule_main s
JOIN manager_group_name g ON s.Group_ID = g.Group_ID
WHERE s.Program_ID = ?
";
$params = [$Program_ID];
$types = "i";
if ($semesterYear) {
$query .= " AND s.Start_Date >= ? AND s.End_Date <= ?";
$params[] = $semStartStr;
$params[] = $semEndStr;
$types .= "ss";
}
$query .= " GROUP BY g.Group_ID, g.Group_Name ORDER BY MIN(s.Start_Date) ASC";
$stmt = $mysqli->prepare($query);
$stmt->bind_param($types, ...$params);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
$scheduleIds = $row['Schedule_IDs'];
$rowId = str_replace(',', '-', $scheduleIds);
$startDate = date('Y-m-d', strtotime($row['Start_Date']));
$endDate = date('Y-m-d', strtotime($row['End_Date']));
echo "