src/EventSubscriber/Purchasing/OrderDatasheetImportCompletionSubscriber.php line 27
<?php
namespace App\EventSubscriber\Purchasing;
use App\Doctrine\Type\Scheduler\TaskStatus;
use App\Event\Purchasing\OrderDatasheetImportEvent;
use App\Event\Purchasing\OrderEventInterface;
use App\Repository\Scheduler\TaskRepository;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
readonly class OrderDatasheetImportCompletionSubscriber implements EventSubscriberInterface
{
public function __construct(
private EntityManagerInterface $entityManager,
private TaskRepository $taskRepository,
) {}
public static function getSubscribedEvents(): array
{
return [
OrderDatasheetImportEvent::IDENTIFIER => 'process',
];
}
public function process(OrderEventInterface $event): void
{
$order = $event->getOrder();
$purchaseOrderDatasheetImportTask = $this->taskRepository->getPurchaseOrderDatasheetImportTask(order: $order, createIfNull: true);
$purchaseOrderDatasheetImportTask->setStatus(TaskStatus::COMPLETED);
$purchaseOrderDatasheetImportTask->setCompletedOn(new DateTime());
$this->entityManager->persist($purchaseOrderDatasheetImportTask);
$this->entityManager->flush();
}
}