@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
| Learner |
@foreach($sessions as $s){{ $s->starts_at->format('d M') }} | @endforeach
Attendance |
@foreach($roster as $r)
@php $u = $r['user']; $isLow = $r['percent'] !== null && $r['percent'] < $min; @endphp
| {{ $u->name }} {{ $u->email }} |
@foreach($sessions as $s)
@php $rec = $records[$u->id][$s->id] ?? null; $st = $rec->status ?? 'absent'; @endphp
{{ ucfirst($st) }}{{ $letters[$st] }} |
@endforeach
@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
|
@endforeach
@endif
@endsection