@php use Illuminate\Support\Carbon; $m = Carbon::parse($month); $showUserDetail = !$month || $week || $date; // is week or day filter $isPerDayFilter = isset($date); @endphp
| {{ $showUserDetail ? __('Name') : __('Name') . '/' . __('Date') }} | @if ($showUserDetail){{ __('NIP') }} | {{ __('Division') }} | {{ __('Job Title') }} | @if ($isPerDayFilter){{ __('Shift') }} | @endif @endif @foreach ($dates as $date) @php if (!$isPerDayFilter && $date->isSunday()) { // Minggu merah $textClass = 'text-red-500 dark:text-red-300'; } elseif (!$isPerDayFilter && $date->isFriday()) { // Jumat hijau $textClass = 'text-green-500 dark:text-green-300'; } else { $textClass = 'text-gray-500 dark:text-gray-300'; } @endphp@if ($isPerDayFilter) Status @else {{ $date->format('d/m') }} @endif | @endforeach @if ($isPerDayFilter){{ __('Time In') }} | {{ __('Time Out') }} | @endif @if (!$isPerDayFilter) @foreach (['H', 'T', 'I', 'S', 'A'] as $_st){{ $_st }} | @endforeach @endif @if ($isPerDayFilter)Actions | @endif|
|---|---|---|---|---|---|---|---|---|---|---|
| {{ $employee->name }} | @if ($showUserDetail){{ $employee->nip }} | {{ $employee->division?->name ?? '-' }} | {{ $employee->jobTitle?->name ?? '-' }} | @if ($isPerDayFilter) @php $attendance = $employee->attendances->isEmpty() ? null : $employee->attendances->first(); $timeIn = $attendance ? $attendance['time_in'] : null; $timeOut = $attendance ? $attendance['time_out'] : null; @endphp{{ $attendance['shift'] ?? '-' }} | @endif @endif {{-- Absensi --}} @php $presentCount = 0; $lateCount = 0; $excusedCount = 0; $sickCount = 0; $absentCount = 0; @endphp @foreach ($dates as $date) @php $isWeekend = $date->isWeekend(); $attendance = $attendances->firstWhere(fn($v, $k) => $v['date'] === $date->format('Y-m-d')); $status = ($attendance ?? [ 'status' => $isWeekend || !$date->isPast() ? '-' : 'absent', ])['status']; switch ($status) { case 'present': $shortStatus = 'H'; $bgColor = 'bg-green-200 dark:bg-green-800 hover:bg-green-300 dark:hover:bg-green-700 border border-green-300 dark:border-green-600'; $presentCount++; break; case 'late': $shortStatus = 'T'; $bgColor = 'bg-amber-200 dark:bg-amber-800 hover:bg-amber-300 dark:hover:bg-amber-700 border border-amber-300 dark:border-amber-600'; $lateCount++; break; case 'excused': $shortStatus = 'I'; $bgColor = 'bg-blue-200 dark:bg-blue-800 hover:bg-blue-300 dark:hover:bg-blue-700 border border-blue-300 dark:border-blue-600'; $excusedCount++; break; case 'sick': $shortStatus = 'S'; $bgColor = 'hover:bg-gray-100 dark:hover:bg-gray-700 border border-gray-300 dark:border-gray-600'; $sickCount++; break; case 'absent': $shortStatus = 'A'; $bgColor = 'bg-red-200 dark:bg-red-800 hover:bg-red-300 dark:hover:bg-red-700 border border-red-300 dark:border-red-600'; $absentCount++; break; default: $shortStatus = '-'; $bgColor = 'hover:bg-gray-100 dark:hover:bg-gray-700 border border-gray-300 dark:border-gray-600'; break; } @endphp @if (!$isPerDayFilter && $attendance && ($attendance['attachment'] || $attendance['note'] || $attendance['coordinates']))@else | {{ $isPerDayFilter ? __($status) : $shortStatus }} | @endif @endforeach {{-- Waktu masuk/keluar --}} @if ($isPerDayFilter){{ $timeIn ?? '-' }} | {{ $timeOut ?? '-' }} | @endif {{-- Total --}} @if (!$isPerDayFilter) @foreach ([$presentCount, $lateCount, $excusedCount, $sickCount, $absentCount] as $statusCount){{ $statusCount }} | @endforeach @endif {{-- Action --}} @if ($isPerDayFilter) @php $attendance = $employee->attendances->isEmpty() ? null : $employee->attendances->first(); @endphp
@if ($attendance && ($attendance['attachment'] || $attendance['note'] || $attendance['coordinates']))
|
@endif