@php
$firstDay = Carbon::create($year, $month, 1);
$lastDay = Carbon::create($year, $month, 1)->endOfMonth();
$daysInMonth = $lastDay->day;
$startingDayOfWeek = $firstDay->dayOfWeek;
// Group leave requests by date
$leavesByDate = [];
foreach($leaveRequests as $leave) {
$currentDate = $leave->from_date->copy();
while($currentDate <= $leave->to_date) {
$dateKey = $currentDate->format('Y-m-d');
if(!isset($leavesByDate[$dateKey])) {
$leavesByDate[$dateKey] = [];
}
$leavesByDate[$dateKey][] = $leave;
$currentDate->addDay();
}
}
@endphp
@for($i = 0; $i < $startingDayOfWeek; $i++)
@endfor
@for($day = 1; $day <= $daysInMonth; $day++)
@php
$currentDate = Carbon::create($year, $month, $day);
$dateKey = $currentDate->format('Y-m-d');
$isToday = $currentDate->isToday();
$leavesForDay = $leavesByDate[$dateKey] ?? [];
@endphp
{{ $day }}
@if(!empty($leavesForDay))
@foreach($leavesForDay as $leave)
{{ $leave->user->full_name }}
@endforeach
@endif
@endfor
@php
$totalCells = $startingDayOfWeek + $daysInMonth;
$remainingCells = 7 - ($totalCells % 7);
@endphp
@if($remainingCells < 7)
@for($i = 0; $i < $remainingCells; $i++)
@endfor
@endif