{{-- resources/views/attendance/index.blade.php --}} @extends('layouts.app') @section('content')

{{ __('attendance.page_title') }}

@can('create attendance') @else @endcan @can('import', \App\Models\Attendance::class) استيراد حضور @endcan

{{ __('attendance.present_today') }}

{{ $presentToday ?? 0 }}

{{ __('attendance.absent_today') }}

{{ $absentWithoutLeaveCount ?? 0 }}

{{ __('attendance.not_recorded') }}: {{ $notRecordedCount ?? 0 }} · {{ __('attendance.on_approved_leave') }}: {{ $onLeaveCount ?? 0 }}

{{ __('attendance.late_today') }}

{{ $lateToday ?? 0 }}

{{ __('attendance.average_check_in') }}

{{ $averageCheckInTime ?? '00:00' }}

{{ __('attendance.attendance_log') }}

@forelse($attendances as $attendance) @empty @endforelse
# {{ __('attendance.employee') }} {{ __('attendance.date') }} {{ __('attendance.scheduled_check_in') }} {{ __('attendance.scheduled_check_out') }} {{ __('attendance.actual_check_in') }} {{ __('attendance.actual_check_out') }} {{ __('attendance.work_duration') }} {{ __('attendance.status') }} {{ __('attendance.notes') }} {{ __('attendance.actions') }}
{{ $attendance->id }} {{ $attendance->employee->name }}
{{ $attendance->employee->department?->name ?? '-' }}
{{ $attendance->date->format('Y-m-d') }} {{ $attendance->scheduled_check_in ?? __('attendance.not_scheduled') }} {{ $attendance->scheduled_check_out ?? __('attendance.not_scheduled') }} {{ $attendance->check_in ?? __('attendance.not_checked_in') }} {{ $attendance->check_out ?? __('attendance.not_checked_out') }} {{ $attendance->work_duration ?? '00:00:00' }} @php $attDate = $attendance->date instanceof \Carbon\Carbon ? $attendance->date->toDateString() : (string)$attendance->date; $isHolidayRow = \App\Models\Holiday::whereDate('date', $attDate)->exists(); $dayNameMap = [1=>'monday',2=>'tuesday',3=>'wednesday',4=>'thursday',5=>'friday',6=>'saturday',7=>'sunday']; $dayName = \Carbon\Carbon::parse($attDate)->dayOfWeekIso; $isWeeklyOffRow = in_array($dayNameMap[$dayName], (array)($attendance->employee->weekly_off_days ?? [])); $displayStatus = $attendance->status; if ($attendance->status === 'present' && ($isHolidayRow || $isWeeklyOffRow)) { $displayStatus = 'present_on_holiday'; } @endphp @if($displayStatus === 'present_on_holiday')
حاضر (يوم عطلة)
@else {{ __('attendance.status_' . ($attendance->status ?? 'absent')) }} @endif {{-- شارة توضح أن هذا الحضور مدفوع ليوم عطلة (إن وُجد) --}} @if(!empty($attendance->paid_for_off))
{{ __('attendance.paid_off_badge') ?? 'أجر حضور' }}
@endif
@php $leaveKey = $attendance->employee_id . '|' . ($attendance->date instanceof \Carbon\Carbon ? $attendance->date->toDateString() : (string) $attendance->date); // prefer explicit relation if present $leaveObj = $attendance->leave ?? null; $leaveInfo = null; if ($leaveObj) { $leaveInfo = ['id' => $leaveObj->id, 'reason' => $leaveObj->reason ?? null, 'is_unpaid' => $leaveObj->is_unpaid_deduction_applied ?? false, 'leave_type' => $leaveObj->leave_type ?? null]; } elseif (!empty($leavesMap[$leaveKey])) { $leaveInfo = $leavesMap[$leaveKey]; } @endphp @if($leaveInfo)
@php $badgeText = $leaveInfo['is_unpaid'] ? 'خصم مادي' : 'خصم من الرصيد'; $title = $leaveInfo['reason'] ? $leaveInfo['reason'] : ($leaveInfo['leave_type'] ?? ''); @endphp
@endif @if($attendance->notes === __('attendance.quick_check_in') || $attendance->notes === 'تسجيل حضور سريع') {{ __('attendance.quick_check_in') }} @elseif($attendance->status === 'present' && strpos($attendance->notes ?? '', 'غياب بدون إذن') === false) {{-- لا تظهر ملاحظات الخصم للحاضرين الفعليين --}} @else {{ $attendance->notes ?? '-' }} @endif
@csrf @method('DELETE')
{{ __('attendance.no_records') }}
{{ $attendances->links() }}
@endsection @push('scripts') @endpush