,candidates:list>} */ public function read(User $actor, PeopleProcess $record): array { $access = app(PeopleAccess::class); abort_unless($access->can($actor, $record, 'view'), 403); $workflow = app(PeopleHiring::class); $snapshot = $workflow->snapshot($record); $rows = $workflow->matrix($record); if (! $access->can($actor, $record, 'financial')) { unset($snapshot['rules']['annex']['fields']['financial']); unset($snapshot['selection']['rules']['annex']['fields']['financial']); } if (! $access->can($actor, $record, 'interviews')) { $rows = array_map(fn ($row) => [...$row, 'reviews' => []], $rows); if (isset($snapshot['selection']['rows'])) { $snapshot['selection']['rows'] = array_map(fn ($row) => [...$row, 'reviews' => []], $snapshot['selection']['rows']); } } if (! $access->can($actor, $record, 'contract') && ! $access->can($actor, $record, 'contract_view')) { $snapshot['contract'] = null; } $rows = app(ReceivedCandidateAvailability::class)->attach($actor, $record, $rows); return ['process' => $snapshot, 'candidates' => $rows]; } }