diff --git a/src/app/Services/EventPlannerService.php b/src/app/Services/EventPlannerService.php index efdf849..3fee5b1 100644 --- a/src/app/Services/EventPlannerService.php +++ b/src/app/Services/EventPlannerService.php @@ -225,8 +225,9 @@ class EventPlannerService protected function hasConflict(string $userId, Carbon $start, Carbon $end): bool { - // 1. Eintägige Termine: einfacher Zeitüberlapp + // 1. Eintägige Termine: einfacher Zeitüberlapp (ganztägige ignorieren) $singleDayConflict = Event::where('user_id', $userId) + ->where('is_all_day', false) ->whereRaw('DATE(starts_at) = DATE(ends_at)') ->where(function ($q) use ($start, $end) { $q->where('starts_at', '<', $end) @@ -244,15 +245,16 @@ class EventPlannerService protected function hasMultiDayConflict(string $userId, Carbon $start, Carbon $end): bool { - // Alle echten Mehrtagesevents deren Datumsbereich den neuen Termin überschneidet + // Alle echten Mehrtagesevents deren Datumsbereich den neuen Termin überschneidet (ganztägige ignorieren) $candidates = Event::where('user_id', $userId) + ->where('is_all_day', false) ->whereRaw('DATE(starts_at) < DATE(ends_at)') ->whereRaw('DATE(starts_at) <= ?', [$end->toDateString()]) ->whereRaw('DATE(ends_at) >= ?', [$start->toDateString()]) ->get(); foreach ($candidates as $event) { - // Reine ganztägige Termine ohne spezifische Zeiten überspringen + // Reine ganztägige Termine ohne spezifische Zeiten überspringen (Fallback) if ($event->starts_at->format('H:i') === '00:00' && in_array($event->ends_at->format('H:i'), ['23:59', '00:00'])) { continue;