<?php
namespace App\V4\EventSubscriber\Quote;
use ApiPlatform\Core\Exception\ResourceClassNotSupportedException;
use App\V4\Event\PostPersistEvent;
use App\V4\EventSubscriber\AbstractSubscriber;
use App\V4\Handler\Task\CrudTaskHandler;
use App\V4\Model\Quote\Quote;
use App\V4\Model\QuoteState\QuoteState;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CreateTaskQuoteExternalRefSubscriber extends AbstractSubscriber implements EventSubscriberInterface
{
/**
* @var CrudTaskHandler
*/
private $crudTaskHandler;
/**
* @param CrudTaskHandler $crudTaskHandler
*/
public function __construct(
CrudTaskHandler $crudTaskHandler
) {
$this->crudTaskHandler = $crudTaskHandler;
}
/**
* @param PostPersistEvent $event
*
* @return bool
*/
public function supports(PostPersistEvent $event): bool
{
return $event->getAfter() instanceof Quote
&& $event->getAfter()->getStatus() instanceof QuoteState
&& null === $event->getBefore();
}
/**
* @return string[]
*/
public static function getSubscribedEvents(): array
{
return [
PostPersistEvent::NAME => 'onPostPersist',
];
}
/**
* @param PostPersistEvent $event
*
* @throws ResourceClassNotSupportedException
*/
public function onPostPersist(PostPersistEvent $event): void
{
/** @var Quote $objPersisted */
$objPersisted = $event->getAfter();
if (!$this->supports($event) || $this->isIdAlreadyManaged($objPersisted->getId(), get_class($this))) {
return;
}
$this->crudTaskHandler->createTaskQuoteExternalRef($objPersisted);
}
}