@extends('dashboard.layouts.app') @section('content') @include('components.alert') @php $today = now()->toDateString(); $hasScopedResults = $selectedStaffId || $selectedDepartmentId || $viewSelf || $viewTeam || (!$is_hr && !$is_manager); $activeFiltersCount = collect([ filled($selectedDepartmentId), filled($selectedStaffId), request()->filled('from_date') && $date_from !== $today, request()->filled('to_date') && $date_to !== $today, $viewSelf, $viewTeam, ])->filter()->count(); $scopeLabel = match (true) { $viewSelf => 'My Attendance', $viewTeam => 'My Team', filled($selectedStaffId) => 'Selected Staff', filled($selectedDepartmentId) => 'Selected Department', $is_hr => 'HR Scope', $is_manager || $is_direct_manager => 'Managed Scope', default => 'Personal Scope', }; $emptyMessage = $hasScopedResults ? 'No attendance records found matching the current filters.' : 'Choose a staff member and date range to review attendance.'; $isSingleStaffScope = filled($selectedStaffId) || ($viewSelf && !$viewTeam) || (!$is_hr && !$is_manager && !$is_direct_manager); @endphp
{{-- {{ $scopeLabel }} --}} {{-- @if ($activeFiltersCount > 0) {{ $activeFiltersCount }} Active Filter(s) @endif --}}
Attendance Filters

Filter by department, staff, quick scope, and date range to inspect attendance records.

@if ($is_hr)
@elseif($is_manager || $is_direct_manager)
@else @endif
@if (($is_manager || $is_direct_manager || $is_hr) && $userStaff)
@endif
@if ($hasScopedResults)
Total Working Days
{{ $working_days }}
Present
{{ $present_days ?? $attendances->count() }}
Late
{{ $late_days ?? 0 }}
Absent
{{ $absent_days }}
Total Hours
{{ number_format($total_hours, 2) }}
Avg Hours
{{ number_format($average_hours, 2) }}
@endif
Attendance Records

{{ $attendances->count() }} record(s) found between {{ $date_from }} and {{ $date_to }}.

{{ $date_from }} to {{ $date_to }}
@foreach ($attendances as $attendance) @if ($is_hr) {{ $attendance->department_name ?: 'N/A' }} @endif {{ $attendance->attendence_date }} @if (!empty($attendance->session_number)) #{{ $attendance->session_number }} {{ isset($attendance->session_start_time) ? \Carbon\Carbon::parse($attendance->session_start_time)->format('H:i') : '' }} - {{ isset($attendance->session_end_time) ? \Carbon\Carbon::parse($attendance->session_end_time)->format('H:i') : '' }} @else N/A @endif {{ $attendance->check_in ?: 'N/A' }} {{ $attendance->check_out ?: 'N/A' }} {{ isset($attendance->delay_minutes) ? formatDuration((int) round($attendance->delay_minutes * 60)) : '0 s' }} {{ isset($attendance->idle_hours) ? formatDuration((int) round($attendance->idle_hours * 3600)) : '0 s' }} @php $status = $attendance->status ?? (($attendance->check_in || $attendance->check_out) ? 'present' : 'absent'); $statusLabel = ucfirst($status); $statusClass = match ($status) { 'present' => 'success', 'late' => 'warn', 'absent' => 'danger', 'leave' => 'info', 'holiday' => 'neutral', default => 'neutral', }; @endphp {{ $statusLabel }} @if (!empty($attendance->approved_permission)) {{ $attendance->approved_permission }} @else N/A @endif {{ $attendance->work_hours ?? '0.00' }} {{-- --}} {{-- --}} {{-- {{ isset($attendance->status) ? $attendance->status : "N/A" }}--}} {{-- --}} {{-- --}} @endforeach
@endsection @push('styles') @endpush @push('scripts') @endpush