@extends('layouts.portal') @section('title', 'Attendance register') @section('subtitle', ($batch->course?->title ?? 'Batch').' · '.$batch->batch_code.' · '.($batch->trainer?->name ?? $batch->trainer_name ?? 'no trainer')) @section('actions') All batches Batch & classes Export CSV @endsection @section('content') @php $min = $batch->minAttendance(); $low = $roster->filter(fn ($r) => $r['percent'] !== null && $r['percent'] < $min); $avg = $roster->whereNotNull('percent')->avg('percent'); $letters = ['present' => 'P', 'late' => 'L', 'absent' => 'A', 'excused' => 'E']; @endphp
Learners{{ $roster->count() }}active in this batch
Registers taken{{ $sessions->count() }}{{ $pending->count() }} waiting
Average attendance{{ $avg !== null ? rtrim(rtrim(number_format($avg, 1), '0'), '.').'%' : 'n/a' }}minimum {{ $min }}%
Below minimum{{ $low->count() }}{{ $low->isNotEmpty() ? 'highlighted below' : 'everyone is on track' }}
@if($pending->isNotEmpty())

Registers waiting

@foreach($pending as $s)
{{ $s->displayTitle() }}
{{ $s->starts_at->format('D d M Y, g:i A') }}
Mark attendance
@endforeach
@endif

Register

P Present L Late A Absent E Excused
@if($roster->isEmpty()) @elseif($sessions->isEmpty()) View classes @else
@foreach($sessions as $s)@endforeach @foreach($roster as $r) @php $u = $r['user']; $isLow = $r['percent'] !== null && $r['percent'] < $min; @endphp @foreach($sessions as $s) @php $rec = $records[$u->id][$s->id] ?? null; $st = $rec->status ?? 'absent'; @endphp @endforeach @endforeach
Learner{{ $s->starts_at->format('d M') }}Attendance
{{ $u->name }}
{{ $u->email }}
{{ ucfirst($st) }} @if($r['percent'] !== null){{ rtrim(rtrim(number_format($r['percent'], 1), '0'), '.') }}%@elsen/a@endif
{{ $r['present'] }}P {{ $r['late'] }}L {{ $r['absent'] }}A {{ $r['excused'] }}E
@endif
@endsection