<?php
declare(strict_types=1);
namespace App\EventsSubscriber\User;
use App\Contracts\User\Role;
use App\Event\User\CreatedEvent;
use App\Messenger\Creator\UpdateAvatarMessage;
use App\Messenger\Creator\UpdateAverageViewsMessage;
use App\Messenger\Creator\UpdateFollowersCountMessage;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Messenger\MessageBusInterface;
class UserEventsSubscriber implements EventSubscriberInterface
{
public function __construct(
private readonly MessageBusInterface $bus,
) {
}
public static function getSubscribedEvents(): array
{
return [
CreatedEvent::class => [
['updateCreatorData'],
],
];
}
public function updateCreatorData(CreatedEvent $event): void
{
if (in_array(Role::CREATOR, $event->getUser()->getRoles(), true)) {
$id = $event->getUser()->getId();
$this->bus->dispatch(new UpdateAvatarMessage($id));
$this->bus->dispatch(new UpdateFollowersCountMessage($id));
$this->bus->dispatch(new UpdateAverageViewsMessage($id));
}
}
}