@php $day = 1; $usedDays = []; @endphp @while ($day <= $daysInMonth) @if (in_array($day, $usedDays)) @php $day++; @endphp @continue @endif @php $currentDate = \Carbon\Carbon::create($year, $month, $day)->toDateString(); $dayEvents = collect($events)->filter(callback: function ($e) use ($currentDate) { $start = \Carbon\Carbon::parse($e->planned_starting_date)->toDateString(); $end = $e->execution_date ? \Carbon\Carbon::parse($e->execution_date)->toDateString() : ($e->planned_completion_date ? \Carbon\Carbon::parse($e->planned_completion_date)->toDateString() : $start); // Ako nema ništa drugo, koristi planned_starting_date kao end return $currentDate >= $start && $currentDate <= $end; }); @endphp @if ($dayEvents->count()) @foreach ($dayEvents as $event) @php $start = \Carbon\Carbon::parse($event->planned_starting_date); $end = $event->execution_date ? \Carbon\Carbon::parse($event->execution_date) : ($event->planned_completion_date ? \Carbon\Carbon::parse($event->planned_completion_date) : $start); $monthStart = \Carbon\Carbon::create($year, $month, 1); $monthEnd = \Carbon\Carbon::create($year, $month, $daysInMonth); $visibleStart = $start->lt($monthStart) ? $monthStart : $start; $visibleEnd = $end->gt($monthEnd) ? $monthEnd : $end; $duration = $visibleStart->diffInDays($visibleEnd) + 1; for ($i = 0; $i < $duration; $i++) { $usedDays[] = $visibleStart->day + $i; } @endphp