Fix: ignore all-day events in conflict detection
parent
7bab29b5eb
commit
ee63529289
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue