toby/app/Domain/Slack/Handlers/TakeKeysFrom.php
Adrian Hopek fad4290cc3 wip
2022-04-22 12:41:00 +02:00

49 lines
1.3 KiB
PHP

<?php
declare(strict_types=1);
namespace Toby\Domain\Slack\Handlers;
use Illuminate\Support\Str;
use Spatie\SlashCommand\Request;
use Spatie\SlashCommand\Response;
use Spatie\SlashCommand\Handlers\SignatureHandler;
use Toby\Eloquent\Models\Key;
use Toby\Eloquent\Models\User;
class TakeKeysFrom extends SignatureHandler
{
protected $signature = "toby klucze:od {użytkownik}";
protected $description = "Zabierz klucze wskazanemu użytkownikowi";
public function handle(Request $request): Response
{
$from = $this->getArgument("użytkownik");
$id = Str::between($from, "@", "|");
$authUser = $this->findUserBySlackId($request->userId);
$user = $this->findUserBySlackId($id);
/** @var Key $key */
$key = $user->keys()->first();
$key->user()->associate($authUser);
$key->save();
return $this->respondToSlack("<@{$authUser->profile->slack_id}> zabiera klucz nr {$key->id} użytkownikowi <@{$user->profile->slack_id}>")
->displayResponseToEveryoneOnChannel();
}
protected function findUserBySlackId(string $slackId): User
{
/** @var User $user */
$user = User::query()
->whereRelation("profile", "slack_id", $slackId)
->first();
return $user;
}
}