{{-- Header --}}

My Attendance

{{-- Shift Info Card --}} @if($shiftType)
â˜€ī¸
Your Assigned Shift

{{ $shiftType->name }}

🕐
Check In
{{ \Carbon\Carbon::parse($shiftType->start_time)->format('h:i A') }}
🕕
Check Out
{{ \Carbon\Carbon::parse($shiftType->end_time)->format('h:i A') }}
đŸŊī¸
Lunch Break
@if($shiftType->lunch_start_time && $shiftType->lunch_end_time) {{ \Carbon\Carbon::parse($shiftType->lunch_start_time)->format('h:i') }} - {{ \Carbon\Carbon::parse($shiftType->lunch_end_time)->format('h:i') }} @else 01:00 - 02:00 @endif
âąī¸
Working Hours
{{ $shiftType->working_hours ?? 8 }} hrs
@php $daysOff = $shiftType->days_off ?? ['saturday', 'sunday']; if (is_string($daysOff)) $daysOff = json_decode($daysOff, true) ?? ['saturday', 'sunday']; @endphp
@else
âš ī¸
Shift Status

No Shift Assigned

@endif {{-- Attendance Ring + Stats --}} @php $totalWorkingDays = $stats['working_days'] > 0 ? $stats['working_days'] : 1; $attendancePercent = $stats['present'] > 0 ? round(($stats['present'] / $totalWorkingDays) * 100) : 0; $circumference = 2 * 3.14159 * 42; $offset = $circumference - ($attendancePercent / 100) * $circumference; @endphp
{{ $attendancePercent }}% Rate

Attendance Rate for {{ \Carbon\Carbon::create($year, $month, 1)->format('F Y') }}

{{ $stats['present'] }} present out of {{ $stats['working_days'] }} working days

{{-- Stats Grid --}}
✓
{{ $stats['present'] }}
Present
✗
{{ $stats['absent'] }}
Absent
⏰
{{ $stats['late'] }}
Late
📋
{{ $stats['leave'] }}
On Leave
🎉
{{ $stats['holiday'] }}
Holidays
âąī¸
{{ number_format($stats['total_hours'], 1) }}
Total Hours
🌟
{{ number_format($stats['overtime_hours'], 1) }}
Overtime
{{-- Calendar --}}
{{ \Carbon\Carbon::create($year, $month, 1)->format('F Y') }} {{ $stats['working_days'] }} working days
Mon
Tue
Wed
Thu
Fri
Sat
Sun
@for($i = 1; $i < $firstDayOfWeek; $i++)
@endfor @foreach($calendarData as $day => $data) @php $statusClass = $data['status']; $statusLabel = match($data['status']) { 'present' => '✓ Present', 'late' => '⏰ Late', 'early_leave' => '↩ Early', 'half_day' => 'ÂŊ Half', 'absent' => '✗ Absent', 'leave' => '📋 ' . ($data['leave']?->leaveType?->name ?? 'Leave'), 'holiday' => '🎉 Holiday', 'weekend' => '🔒 Off', 'no_shift' => '⚠ No Shift', default => '' }; $extraInfo = ''; if ($data['holiday']) $extraInfo = $data['holiday']->name ?? ''; elseif ($data['leave']) $extraInfo = $data['leave']->leaveType?->name ?? ''; @endphp
{{ $day }} @if($data['isToday']) Today @endif
@if($data['status'] != 'none' && !$data['isFuture']) {{ $statusLabel }} @if($data['hours'] > 0)
{{ number_format($data['hours'], 1) }}h @if(($data['attendance']?->overtime_hours ?? 0) > 0) +{{ number_format($data['attendance']->overtime_hours, 1) }} @endif
@endif @if($extraInfo)
{{ $extraInfo }}
@endif @endif
@endforeach
Present
Late
Absent
On Leave
Holiday
Weekend
No Shift
{{-- Day Detail Panel --}}
📅 January 1, 2026
✓
Present
Check In
-
→
Check Out
-
âąī¸
-
Hours Worked
🌟
-
Overtime
⏰
-
Late By