$images * @param array $imageDescriptions */ public function handle(User $user, Commit $commit, string $reason, ?string $details, array $images = [], array $imageDescriptions = []): void { DB::transaction(function () use ($user, $commit, $reason, $details, $images, $imageDescriptions): void { $report = CommitReport::query()->createOrFirst([ 'commit_id' => $commit->id, 'reporter_id' => $user->id, ], [ 'reason' => $reason, 'details' => $details, ]); if ($report->wasRecentlyCreated && $images !== []) { $report->forceFill([ 'images' => $this->createImageFiles->handle($images, $imageDescriptions, 'report-images', encrypted: true), ])->save(); } }); } }