@extends('layouts.app') @section('title', 'Attendance Management') @section('content')

Time & Attendance Roster

Monitor biometric punches, working durations, grace periods, and overtime logs

Export CSV
Present on {{ date('d M', strtotime($date)) }}

{{ $totalPresent }}

Checked in successfully
Late Arrivals

{{ $totalLate }}

Exceeded 15m grace
Logged Overtime

{{ number_format($totalOvertimeHours, 1) }} hrs

Past 18:00 standard shift
@if(request()->anyFilled(['department_id', 'status']) || $date !== date('Y-m-d')) Today @endif
@forelse($attendances as $att) @empty @endforelse
Employee Department Check-In Check-Out Status Late (Mins) Overtime Work Duration Source
{{ strtoupper(substr($att->employee->first_name ?? 'E', 0, 1)) }}
{{ $att->employee->full_name ?? 'Staff' }}
{{ $att->employee->employee_code ?? '' }}
{{ $att->employee->department->name ?? 'General' }} {{ $att->check_in ? $att->check_in->format('h:i A') : '--:--' }} {{ $att->check_out ? $att->check_out->format('h:i A') : '--:--' }} @if($att->status === 'present') Present @elseif($att->status === 'late') Late @elseif($att->status === 'half_day') Half-Day @else Absent @endif @if($att->late_minutes > 0) +{{ $att->late_minutes }}m @else On time @endif @if($att->overtime_hours > 0) +{{ $att->overtime_hours }}h @else - @endif {{ $att->total_work_hours }} hrs {{ str_replace('_', ' ', $att->source) }}
No attendance records found for this date and filter.
@if($attendances->hasPages()) @endif
@endsection