
* wip * wip * wip * wip * fix * wip * wip * fix * fix * cs fix * #116 - fix * #116 - changed home-office icon * Apply suggestions from code review Co-authored-by: Krzysztof Rewak <krzysztof.rewak@gmail.com> * #116 - cr fix * #116 - cs fix * #116 - cs fix * Apply suggestions from code review Co-authored-by: Ewelina Lasowy <56546832+EwelinaLasowy@users.noreply.github.com> * #5 - bump codestyle Co-authored-by: EwelinaLasowy <ewelina.lasowy@blumilk.pl> Co-authored-by: Krzysztof Rewak <krzysztof.rewak@gmail.com> Co-authored-by: Ewelina Lasowy <56546832+EwelinaLasowy@users.noreply.github.com>
44 lines
1002 B
PHP
44 lines
1002 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Toby\Infrastructure\Slack\Traits;
|
|
|
|
use Illuminate\Support\Str;
|
|
use Toby\Eloquent\Models\User;
|
|
use Toby\Infrastructure\Slack\Exceptions\UserNotFoundException;
|
|
|
|
trait FindsUserBySlackId
|
|
{
|
|
protected function findUserBySlackId(string $slackId): ?User
|
|
{
|
|
$id = $this->prepareSlackIdFromString($slackId);
|
|
|
|
/** @var User $user */
|
|
$user = User::query()
|
|
->whereRelation("profile", "slack_id", $id)
|
|
->first();
|
|
|
|
return $user;
|
|
}
|
|
|
|
/**
|
|
* @throws UserNotFoundException
|
|
*/
|
|
protected function findUserBySlackIdOrFail(string $slackId): ?User
|
|
{
|
|
$user = $this->findUserBySlackId($slackId);
|
|
|
|
if (!$user) {
|
|
throw new UserNotFoundException("Użytkownik {$slackId} nie istnieje w tobym");
|
|
}
|
|
|
|
return $user;
|
|
}
|
|
|
|
protected function prepareSlackIdFromString(string $slackId): string
|
|
{
|
|
return Str::between($slackId, "<@", "|");
|
|
}
|
|
}
|