subject_type === 'person' && $submission->subject_id !== null) { $subject = $submission->subject; if ($subject instanceof Person) { return $subject; } } $user = $this->resolveUser($submission); $person = Person::query()->withoutGlobalScopes()->where('user_id', $user->id) ->where('event_id', $submission->event_id) ->first(); if ($person === null) { throw new PurposeSubjectResolutionException( 'post_event_evaluation', 'no_person_for_user', (string) $submission->id, "user {$user->id} has no Person linked for event {$submission->event_id}", ); } return $person; } private function resolveUser(FormSubmission $submission): User { if ($submission->submitted_by_user_id !== null) { $user = User::query()->find($submission->submitted_by_user_id); if ($user instanceof User) { return $user; } } throw new PurposeSubjectResolutionException( 'post_event_evaluation', 'no_auth', (string) $submission->id, 'post_event_evaluation submission has no authenticated User', ); } }