src/V4/EventSubscriber/Quote/CreateTaskQuoteExternalRefSubscriber.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\V4\EventSubscriber\Quote;
  3. use ApiPlatform\Core\Exception\ResourceClassNotSupportedException;
  4. use App\V4\Event\PostPersistEvent;
  5. use App\V4\EventSubscriber\AbstractSubscriber;
  6. use App\V4\Handler\Task\CrudTaskHandler;
  7. use App\V4\Model\Quote\Quote;
  8. use App\V4\Model\QuoteState\QuoteState;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class CreateTaskQuoteExternalRefSubscriber extends AbstractSubscriber implements EventSubscriberInterface
  11. {
  12.     /**
  13.      * @var CrudTaskHandler
  14.      */
  15.     private $crudTaskHandler;
  16.     /**
  17.      * @param CrudTaskHandler $crudTaskHandler
  18.      */
  19.     public function __construct(
  20.         CrudTaskHandler $crudTaskHandler
  21.     ) {
  22.         $this->crudTaskHandler $crudTaskHandler;
  23.     }
  24.     /**
  25.      * @param PostPersistEvent $event
  26.      *
  27.      * @return bool
  28.      */
  29.     public function supports(PostPersistEvent $event): bool
  30.     {
  31.         return $event->getAfter() instanceof Quote
  32.             && $event->getAfter()->getStatus() instanceof QuoteState
  33.             && null === $event->getBefore();
  34.     }
  35.     /**
  36.      * @return string[]
  37.      */
  38.     public static function getSubscribedEvents(): array
  39.     {
  40.         return [
  41.             PostPersistEvent::NAME => 'onPostPersist',
  42.         ];
  43.     }
  44.     /**
  45.      * @param PostPersistEvent $event
  46.      *
  47.      * @throws ResourceClassNotSupportedException
  48.      */
  49.     public function onPostPersist(PostPersistEvent $event): void
  50.     {
  51.         /** @var Quote $objPersisted */
  52.         $objPersisted $event->getAfter();
  53.         if (!$this->supports($event) || $this->isIdAlreadyManaged($objPersisted->getId(), get_class($this))) {
  54.             return;
  55.         }
  56.         $this->crudTaskHandler->createTaskQuoteExternalRef($objPersisted);
  57.     }
  58. }