validate($input); $site->source_control_id = $input['source_control']; try { if ($site->sourceControl()) { $site->sourceControl()->getRepo($site->repository); } } catch (SourceControlIsNotConnected) { throw ValidationException::withMessages([ 'source_control' => 'Source control is not connected', ]); } catch (RepositoryPermissionDenied) { throw ValidationException::withMessages([ 'repository' => 'You do not have permission to access this repository', ]); } catch (RepositoryNotFound) { throw ValidationException::withMessages([ 'repository' => 'Repository not found', ]); } $site->save(); } private function validate(array $input): void { Validator::make($input, [ 'source_control' => [ 'required', Rule::exists('source_controls', 'id'), ], ])->validate(); } }