$input */ public function transition(User $actor, int $id, array $input): Opportunity { $action = $input['action'] ?? null; if (! in_array($action, ['submit', 'publish'], true)) { return $this->workflow->transition($actor, $id, $input); } $record = Opportunity::withTrashed()->findOrFail($id); app(PortalProfileAccess::class)->authorize($actor, 'view', $record); if (! in_array($action, $this->workflow->actions($actor, $record), true)) { return $this->workflow->transition($actor, $id, $input); } return $this->execution->run($actor, $record, $action, $input, fn () => $this->workflow->transition($actor, $id, $input)); } }