<?php
namespace App\EventSubscriber\User;
use App\Event\User\UpdateUserPartnerIdEvent;
use App\Message\User\RemoveUserFromPartnerGroupsMessage;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Messenger\MessageBusInterface;
final class UserSubscriber implements EventSubscriberInterface
{
private MessageBusInterface $messageBus;
public function __construct(MessageBusInterface $messageBus)
{
$this->messageBus = $messageBus;
}
public static function getSubscribedEvents(): array
{
return [
UpdateUserPartnerIdEvent::class => 'onUpdateUserPartnerId',
];
}
public function onUpdateUserPartnerId(UpdateUserPartnerIdEvent $event): void
{
$oldPartnerId = $event->getOldPartnerId();
$newPartnerId = $event->getNewPartnerId();
if (!is_null($oldPartnerId) && (string) $oldPartnerId !== (string) $newPartnerId) {
$this->messageBus->dispatch(new RemoveUserFromPartnerGroupsMessage(
$event->getUser()->getEmail(),
$oldPartnerId
));
}
}
}