Fix: ignore all-day events in conflict detection

main
boban 2026-04-19 06:45:30 +02:00
parent 7bab29b5eb
commit ee63529289
1 changed files with 5 additions and 3 deletions

View File

@ -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;