$from] = $this->validate(); $authUser = $this->findUserBySlackIdOrFail($request->userId); $user = $this->findUserBySlackId($from); /** @var Key $key */ $key = $authUser->keys()->first(); if (!$key) { throw ValidationException::withMessages(["key" => "Nie masz żadnego klucza do przekazania"]); } if ($user->is($authUser)) { throw ValidationException::withMessages([ "key" => "Nie możesz przekazać sobie kluczy :dzban:", ]); } $key->user()->associate($user); $key->save(); $key->notify(new KeyHasBeenGivenNotification($authUser, $user)); return $this->respondToSlack( ":white_check_mark: Klucz nr {$key->id} został przekazany użytkownikowi <@{$user->profile->slack_id}>", ); } protected function getRules(): array { return [ "user" => ["required", new SlackUserExistsRule()], ]; } protected function getMessages(): array { return [ "user.required" => "Musisz podać użytkownika, któremu chcesz przekazać klucze", ]; } }