src/AppBundle/EventListener/WarengruppenEventListener.php line 30

Open in your IDE?
  1. <?php
  2. namespace AppBundle\EventListener;
  3. use AppBundle\Actions\LoggerAction;
  4. use AppBundle\Message\Warengruppen\SyncWarengruppenAttributesToArticlesMessage;
  5. use AppBundle\Service\General\EventListenerJobIdentifierService;
  6. use Pimcore\Db;
  7. use Pimcore\Event\Model\ElementEventInterface;
  8. use Pimcore\Model\DataObject\Warengruppe;
  9. use Symfony\Component\Messenger\MessageBusInterface;
  10. class WarengruppenEventListener extends DataObjectEventListener {
  11.     /**
  12.      * @param MessageBusInterface $messageBus
  13.      */
  14.     public function __construct(MessageBusInterface $messageBus) {
  15.         parent::__construct($messageBus);
  16.     }
  17.     const PIMCORE_DATA_OBJECT_CLASS_PATH Warengruppe::class;
  18.     protected $object;
  19.     /**
  20.      * @param ElementEventInterface $event
  21.      * @return void
  22.      * @throws \Doctrine\DBAL\DBALException
  23.      */
  24.     public function onObjectPreAdd(ElementEventInterface $event): void {
  25.         // Not Warengruppe DataObject?
  26.         if(!$this->eventBelongsToThisClass($event)){
  27.             return;
  28.         }
  29.         $this->onObjectPrePersist();
  30.     }
  31.     /**
  32.      * @param ElementEventInterface $event
  33.      * @return void
  34.      * @throws \Doctrine\DBAL\DBALException
  35.      * @throws \Doctrine\DBAL\Driver\Exception
  36.      * @throws \Doctrine\DBAL\Exception
  37.      * @throws \Doctrine\DBAL\Exception\DriverException
  38.      */
  39.     public function onObjectPreUpdate(ElementEventInterface $event): void {
  40.         // Not Warengruppe DataObject?
  41.         if(!$this->eventBelongsToThisClass($event)){
  42.             return;
  43.         }
  44.         $this->onObjectPrePersist();
  45.         $this->dispatchAttributesToArticlesAsyncJob($this->object);
  46.     }
  47.     /**
  48.      * @return void
  49.      */
  50.     public function onObjectPrePersist(): void {
  51.         // If datumStillgelegt field has value, remove Aktiv flag from object
  52.         $datumStillgelegt $this->object->getDatumStillgelegt();
  53.         if($datumStillgelegt && $datumStillgelegt != '0') {
  54.             $this->object->setAktiv(false);
  55.             $this->object->setAktiv_ch(false);
  56.             $this->object->setAktiv_de(false);
  57.         }
  58.     }
  59.     /**
  60.      * @param Warengruppe $object
  61.      * @return void
  62.      * @throws \Doctrine\DBAL\DBALException
  63.      * @throws \Doctrine\DBAL\Driver\Exception
  64.      * @throws \Doctrine\DBAL\Exception
  65.      * @throws \Doctrine\DBAL\Exception\DriverException
  66.      */
  67.     private function dispatchAttributesToArticlesAsyncJob(Warengruppe $object): void {
  68.         // We fetch the necessary variables from this object
  69.         $classId $object->getClassId();
  70.         $objectId $object->getId();
  71.         $jobId EventListenerJobIdentifierService::WARRENGRUPPEN_ATTRIBUTES_TO_ARTICLES_SYNC;
  72.         // We generate a unique message id for this job
  73.         $umid $this->generateUmid($classId$objectId$jobId);
  74.         // If a message with this umid doesn't exist, create it
  75.         if(!$this->messageExistsInQueue("general_messages"$umid"event_listener")){
  76.             $this->messageBus->dispatch(new SyncWarengruppenAttributesToArticlesMessage($objectId$umid));
  77.         }
  78.     }
  79. }