diff --git a/WorkflowEngine.php b/WorkflowEngine.php index db5ed98..245033a 100644 --- a/WorkflowEngine.php +++ b/WorkflowEngine.php @@ -134,15 +134,32 @@ class WorkflowEngine { // 7. Fetch Spotkania columns (upcoming meetings) $today = date('Y-m-d H:i:s'); $stmt_meetings = $this->pdo->prepare(" - SELECT bni_groups.id as group_id, bni_groups.name as group_name, MIN(calendar_events.start_datetime) as next_meeting_date - FROM bni_groups - LEFT JOIN calendar_event_groups ON bni_groups.id = calendar_event_groups.bni_group_id - LEFT JOIN calendar_events ON calendar_event_groups.calendar_event_id = calendar_events.id AND calendar_events.start_datetime >= :today - GROUP BY bni_groups.id - ORDER BY bni_groups.name + WITH RankedMeetings AS ( + SELECT + bg.id as group_id, + bg.name as group_name, + ce.start_datetime, + ROW_NUMBER() OVER(PARTITION BY bg.id ORDER BY ce.start_datetime) as rn + FROM bni_groups bg + JOIN calendar_event_groups ceg ON bg.id = ceg.bni_group_id + JOIN calendar_events ce ON ceg.calendar_event_id = ce.id + WHERE ce.start_datetime >= :today + ) + SELECT group_id, group_name, start_datetime + FROM RankedMeetings + WHERE rn <= 3 + ORDER BY group_id, start_datetime; "); $stmt_meetings->execute(['today' => $today]); - $spotkania_cols = $stmt_meetings->fetchAll(PDO::FETCH_ASSOC); + $upcoming_meetings_flat = $stmt_meetings->fetchAll(PDO::FETCH_ASSOC); + + $spotkania_cols = []; + foreach ($upcoming_meetings_flat as $meeting) { + $spotkania_cols[$meeting['group_id']]['group_id'] = $meeting['group_id']; + $spotkania_cols[$meeting['group_id']]['group_name'] = $meeting['group_name']; + $spotkania_cols[$meeting['group_id']]['meetings'][] = $meeting['start_datetime']; + } + return [ 'people' => $people, diff --git a/index.php b/index.php index 2daba49..2d791a6 100644 --- a/index.php +++ b/index.php @@ -124,9 +124,15 @@ $status_colors = [