public static function retireDeadWorkers(Repository $roster, Clock $clock, Interval $consideredDeadAfter) { $now = $clock->current(); $consideredDeadAt = clone $now; $consideredDeadAt->sub($consideredDeadAfter->toDateInterval()); $deadWorkers = $roster->deadWorkers($consideredDeadAt); $jobsToReassign = []; foreach ($deadWorkers as $deadWorker) { $roster->retireWorkerWithId($deadWorker['_id']); if (array_key_exists('assigned_to', $deadWorker)) { if (array_key_exists((string) $deadWorker['_id'], $deadWorker['assigned_to'])) { $jobsToReassign[] = $deadWorker['assigned_to'][(string) $deadWorker['_id']]; } } } return $jobsToReassign; }