resolveLatest($eventDate); return $date !== null && $date->suspended_at === null ? $date : null; } /** Sigue las reprogramaciones para presentación, incluso si el destino está suspendido. */ public function resolveLatest(EventDate $eventDate): ?EventDate { $current = $eventDate; $visited = []; while (true) { $identity = $current->getKey() === null ? 'object:'.spl_object_id($current) : 'key:'.$current->getKey(); if (isset($visited[$identity])) { return null; } $visited[$identity] = true; if ($current->rescheduled_to_event_date_id === null) { return $current; } $current->loadMissing('rescheduledTo'); $current = $current->rescheduledTo; if ($current === null) { return null; } } } }