@extends('layout.layout') @section('content') @php $attendees = collect($status['attendees'] ?? []); $sessionNumber = $session->session_number ?? $session->id; $courseName = $course->course_name_en ?? $status['meeting_name'] ?? 'Course Session'; $totalUsers = $status['participant_count'] ?? $attendees->count(); $onlineUsers = $attendees->filter(fn ($attendee) => $attendee['is_online'] ?? ($status['running'] ?? false))->count(); $talkActiveUsers = $attendees->filter(fn ($attendee) => ($attendee['has_joined_voice'] ?? 'No') === 'Yes' && ($attendee['is_listening_only'] ?? 'No') !== 'Yes')->count(); $webcamActiveUsers = $attendees->filter(fn ($attendee) => ($attendee['has_video'] ?? 'No') === 'Yes')->count(); @endphp @include('components.alert')
| User | Profile Type | App User ID | Join Count | First Join | Last Join | Left At | Meeting Time | Talk Time | Talk Opens | Last Talk Open | Last Talk Close | Mic Muted | Webcam Time | Webcam Opens | Last Webcam Open | Last Webcam Close | Status |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
{{ $initials ?: 'U' }}
@if($attendee['profile_url'])
{{ $attendee['name'] }}
@else
{{ $attendee['name'] }}
@endif
|
{{ $attendee['profile_type'] ?? 'N/A' }} | {{ $attendee['app_user_id'] ?? 'N/A' }} | {{ $attendee['join_count'] ?? 0 }} | {{ !empty($attendee['first_joined_at']) ? \Carbon\Carbon::parse($attendee['first_joined_at'])->format('M d, h:i A') : 'N/A' }} | {{ !empty($attendee['last_joined_at']) ? \Carbon\Carbon::parse($attendee['last_joined_at'])->format('M d, h:i A') : 'N/A' }} | {{ !empty($attendee['left_at']) ? \Carbon\Carbon::parse($attendee['left_at'])->format('M d, h:i A') : 'N/A' }} | {{ gmdate('H:i:s', max(0, (int) ($attendee['attendance_total_seconds'] ?? 0))) }} | @if(($attendee['has_joined_voice'] ?? 'No') === 'Yes' && ($attendee['is_listening_only'] ?? 'No') !== 'Yes') {{ ($attendee['mic_is_muted'] ?? 'No') === 'Yes' ? 'Muted' : 'Active' }} {{ gmdate('H:i:s', max(0, (int) ($attendee['mic_total_seconds'] ?? 0))) }} @else {{ gmdate('H:i:s', max(0, (int) ($attendee['mic_total_seconds'] ?? 0))) }} @endif | {{ $attendee['mic_open_count'] ?? 0 }} | {{ !empty($attendee['mic_opened_at']) ? \Carbon\Carbon::parse($attendee['mic_opened_at'])->format('M d, h:i A') : 'N/A' }} | {{ !empty($attendee['mic_closed_at']) ? \Carbon\Carbon::parse($attendee['mic_closed_at'])->format('M d, h:i A') : 'N/A' }} | {{ $attendee['mic_is_muted'] ?? 'No' }} | @if(($attendee['has_video'] ?? 'No') === 'Yes') Active {{ gmdate('H:i:s', max(0, (int) ($attendee['webcam_total_seconds'] ?? 0))) }} @else {{ gmdate('H:i:s', max(0, (int) ($attendee['webcam_total_seconds'] ?? 0))) }} @endif | {{ $attendee['webcam_open_count'] ?? 0 }} | {{ !empty($attendee['webcam_opened_at']) ? \Carbon\Carbon::parse($attendee['webcam_opened_at'])->format('M d, h:i A') : 'N/A' }} | {{ !empty($attendee['webcam_closed_at']) ? \Carbon\Carbon::parse($attendee['webcam_closed_at'])->format('M d, h:i A') : 'N/A' }} | {{ $isOnline ? 'Online' : 'Offline' }} |
|
No attendees data yet. BigBlueButton sends attendee rows while the meeting is running.
|
|||||||||||||||||