<?php
namespace App\EventSubscriber;
use App\Event\CreateOrganizationEvent;
use App\Event\DeleteOrganizationEvent;
use App\Event\UpdateOrganizationEvent;
use App\Message\CreateOrganizationMessage;
use App\Message\DeleteOrganizationMessage;
use App\Message\UpdateOrganizationMessage;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Messenger\MessageBusInterface;
class OrganizationSubscriber implements EventSubscriberInterface
{
protected MessageBusInterface $bus;
/**
* @param MessageBusInterface $bus
*/
public function __construct(MessageBusInterface $bus)
{
$this->bus = $bus;
}
public static function getSubscribedEvents()
{
return [
CreateOrganizationEvent::NAME => 'onCreateOrganization',
UpdateOrganizationEvent::NAME => 'onUpdateOrganization',
DeleteOrganizationEvent::NAME => 'onDeleteOrganization',
];
}
public function onCreateOrganization(CreateOrganizationEvent $event)
{
$payload = [
'organization' => $event->getOrganization(),
'serviceCodes' => $event->getServices()
];
$message = new CreateOrganizationMessage($payload);
$this->bus->dispatch($message);
}
public function onUpdateOrganization(UpdateOrganizationEvent $event)
{
$payload = [
'organization' => $event->getOrganization(),
'serviceCodes' => $event->getServices()
];
$message = new UpdateOrganizationMessage($payload);
$this->bus->dispatch($message);
}
public function onDeleteOrganization(DeleteOrganizationEvent $event)
{
$payload = [
'organization' => $event->getOrganization(),
'serviceCodes' => $event->getServices()
];
$message = new DeleteOrganizationMessage($payload);
$this->bus->dispatch($message);
}
}