src/Aqarmap/Bundle/ListingBundle/EventListener/ListingUpdatedListener.php line 43

Open in your IDE?
  1. <?php
  2. namespace Aqarmap\Bundle\ListingBundle\EventListener;
  3. use App\Message\ListingUpdatedMessage;
  4. use Aqarmap\Bundle\ListingBundle\Event\ListingUpdatedEvent;
  5. use Aqarmap\Bundle\ListingBundle\Service\ListingLabelQueueProducer;
  6. use Aqarmap\Bundle\ListingBundle\Service\ListingRateService;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Doctrine\ORM\UnitOfWork;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\Messenger\MessageBusInterface;
  11. class ListingUpdatedListener implements EventSubscriberInterface
  12. {
  13.     /** @var ListingRateService */
  14.     private $listingRateService;
  15.     /** @var UnitOfWork */
  16.     private $unitOfWork;
  17.     /** @var ListingLabelQueueProducer */
  18.     private $listingLabelQueueProducer;
  19.     private MessageBusInterface $messageBus;
  20.     public function __construct(ListingRateService $listingRateServiceEntityManagerInterface $entityManagerListingLabelQueueProducer $listingLabelQueueProducerMessageBusInterface $messageBus)
  21.     {
  22.         $this->listingRateService $listingRateService;
  23.         $this->unitOfWork $entityManager->getUnitOfWork();
  24.         $this->listingLabelQueueProducer $listingLabelQueueProducer;
  25.         $this->messageBus $messageBus;
  26.     }
  27.     public function postUpdate($listing$event): void
  28.     {
  29.         $this->messageBus->dispatch(new ListingUpdatedMessage($listing->getId()));
  30.         $this->unitOfWork->computeChangeSets();
  31.         $changedFields $this->unitOfWork->getEntityChangeSet($listing);
  32.         $this->listingLabelQueueProducer->publish($listingarray_keys($changedFields));
  33.     }
  34.     public function onUpdate(ListingUpdatedEvent $event): void
  35.     {
  36.         $this->listingRateService->markRateStatusUpdated($event->getListing(), $event->getFields());
  37.     }
  38.     /**
  39.      * {@inheri tdoc}.
  40.      */
  41.     public static function getSubscribedEvents()
  42.     {
  43.         return [
  44.             ListingUpdatedEvent::UPDATED => 'onUpdate',
  45.         ];
  46.     }
  47. }