src/EventSubscriber/OrganizationSubscriber.php line 35

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Event\CreateOrganizationEvent;
  4. use App\Event\DeleteOrganizationEvent;
  5. use App\Event\UpdateOrganizationEvent;
  6. use App\Message\CreateOrganizationMessage;
  7. use App\Message\DeleteOrganizationMessage;
  8. use App\Message\UpdateOrganizationMessage;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\Messenger\MessageBusInterface;
  11. class OrganizationSubscriber implements EventSubscriberInterface
  12. {
  13.     protected MessageBusInterface $bus;
  14.     /**
  15.      * @param MessageBusInterface $bus
  16.      */
  17.     public function __construct(MessageBusInterface $bus)
  18.     {
  19.         $this->bus $bus;
  20.     }
  21.     public static function getSubscribedEvents()
  22.     {
  23.         return [
  24.             CreateOrganizationEvent::NAME => 'onCreateOrganization',
  25.             UpdateOrganizationEvent::NAME => 'onUpdateOrganization',
  26.             DeleteOrganizationEvent::NAME => 'onDeleteOrganization',
  27.         ];
  28.     }
  29.     public function onCreateOrganization(CreateOrganizationEvent $event)
  30.     {
  31.         $payload = [
  32.             'organization' => $event->getOrganization(),
  33.             'serviceCodes' => $event->getServices()
  34.         ];
  35.         $message = new CreateOrganizationMessage($payload);
  36.         $this->bus->dispatch($message);
  37.     }
  38.     public function onUpdateOrganization(UpdateOrganizationEvent $event)
  39.     {
  40.         $payload = [
  41.             'organization' => $event->getOrganization(),
  42.             'serviceCodes' => $event->getServices()
  43.         ];
  44.         $message = new UpdateOrganizationMessage($payload);
  45.         $this->bus->dispatch($message);
  46.     }
  47.     public function onDeleteOrganization(DeleteOrganizationEvent $event)
  48.     {
  49.         $payload = [
  50.             'organization' => $event->getOrganization(),
  51.             'serviceCodes' => $event->getServices()
  52.         ];
  53.         $message = new DeleteOrganizationMessage($payload);
  54.         $this->bus->dispatch($message);
  55.     }
  56. }