@extends('layouts.contentNavbarLayout') @section('content')

Attendance Calendar - {{ \Carbon\Carbon::createFromDate($year, $month, 1)->format('F Y') }}

@php use Carbon\Carbon; $currentYear = now()->year; $startYear = 2025; $endYear = $currentYear; $months = [ '01' => 'January', '02' => 'February', '03' => 'March', '04' => 'April', '05' => 'May', '06' => 'June', '07' => 'July', '08' => 'August', '09' => 'September', '10' => 'October', '11' => 'November', '12' => 'December' ]; [$selectedYear, $selectedMonthNum] = explode('-', $selectedMonth ?? now()->format('Y-m')); @endphp
Calendar View
@php $firstDay = Carbon::createFromDate($year, $month, 1); $startDay = $firstDay->dayOfWeek; $daysInMonth = $firstDay->daysInMonth; $day = 1; @endphp @for ($week = 0; $week < 6 && $day <=$daysInMonth; $week++) @for ($dow = 0; $dow < 7; $dow++) @if ($week==0 && $dow < $startDay) @elseif ($day > $daysInMonth) @else @php $dateStr = Carbon::createFromDate($year, $month, $day)->format('Y-m-d'); $logs = $calendarData[$dateStr] ?? []; $isSunday = Carbon::createFromDate($year, $month, $day)->isSunday(); $isHoliday = array_key_exists($dateStr, $holidayDates); @endphp @php $day++; @endphp @endif @endfor @endfor
Sun Mon Tue Wed Thu Fri Sat
{{ $day }}
{{-- Show holiday name --}} @if ($isHoliday) {{ $holidayDates[$dateStr] }} @endif
@csrf
๐Ÿ“‹ Combined Leave Summary
@foreach($userLogs as $index => $user) {{-- Add $index here --}} @if (empty($user->worker_id) || $user->worker_id == 0) @continue @endif @php $leaveCount = 0.0; for ($d = 1; $d <= $daysInMonth; $d++) { $logs=$userDayLogs[$user-> employee_code][$d] ?? collect(); $inTime = $logs->first()?->in_time; $outTime = $logs->last()?->out_time; $date = \Carbon\Carbon::createFromDate($year, $month, $d); $dateStr = $date->format('Y-m-d'); if ($date->isSunday() || array_key_exists($dateStr, $holidayDates ?? [])) { continue; } $isPresent = $logs->isNotEmpty() && $inTime !== '00:00:00' && $outTime !== '00:00:00'; $duration = $isPresent ? $logs->sum('duration_minutes') : 0; if (!$isPresent) { $leaveCount += 1; } elseif ($duration >= 240 && $duration < 360) { $leaveCount +=0.5; } } $leaveDisplay=rtrim(rtrim(number_format($leaveCount, 1), '0' ), '.' ); $approvedLeaveGroup=$approvedLeaves[$user->worker_id] ?? collect(); $approvedLeaveCount = $approvedLeaveGroup->sum(function ($leave) { return $leave->is_half_day ? 0.5 : $leave->number_of_days; }); $approvedLeaveDisplay = rtrim(rtrim(number_format($approvedLeaveCount, 1), '0'), '.'); @endphp {{-- Hidden Inputs --}} @endforeach
๐Ÿ‘ค Employee Name ๐Ÿ†” Worker ID ๐Ÿ“† Attendance-Based essl ๐Ÿ“ Approved Leave From Leave Table
{{ $user->name }} {{ $user->worker_id }} {{ $leaveDisplay }} Day(s) {{ $approvedLeaveDisplay }} Day(s)
@php $selectedMonth = sprintf('%04d-%02d', $year, $month); // from hidden input $currentMonth = now()->format('Y-m'); $isCurrentMonth = $selectedMonth === $currentMonth; @endphp
User-wise Attendance
{{-- Tab Contents --}}
@foreach($userDayLogs as $userId => $dayLogs)
@for ($d = 1; $d <= $daysInMonth; $d++) @php $date=\Carbon\Carbon::create($year, $month, $d); $dateStr=$date->format('Y-m-d'); $isSunday = $date->isSunday(); $isHoliday = array_key_exists($dateStr, $holidayDates ?? []); $holidayTitle = $holidayDates[$dateStr] ?? null; $logs = $dayLogs[$d] ?? collect(); $inTime = $logs->first()?->in_time; $outTime = $logs->last()?->out_time; $isPresent = $logs->isNotEmpty() && $inTime !== '00:00:00' && $outTime !== '00:00:00'; $duration = $isPresent ? $logs->sum('duration_minutes') : 0; $hours = floor($duration / 60); $minutes = $duration % 60; // Determine status badge if ($isHoliday) { $statusBadge = ' H'; } elseif ($isSunday) { $statusBadge = 'S'; } elseif (!$isPresent) { $statusBadge = 'A'; } elseif ($duration >= 240 && $duration < 360) { $statusBadge='ยฝ' ; } else { $statusBadge='P' ; } @endphp @endfor
Date In Time Out Time Duration Status
{{ $date->format('j M Y D') }} {!! $isHoliday ? '-' : ($isPresent ? e($inTime) : '-') !!} {!! $isHoliday ? '-' : ($isPresent ? e($outTime) : '-') !!} {!! $isHoliday ? '-' : ($isPresent ? "{$hours}h {$minutes}m" : '-') !!} {!! $statusBadge !!}
@endforeach
{{-- Initialize Bootstrap tooltips --}} @endsection