src/EventSubscriber/Purchasing/OrderDatasheetImportCompletionSubscriber.php line 27

  1. <?php
  2. namespace App\EventSubscriber\Purchasing;
  3. use App\Doctrine\Type\Scheduler\TaskStatus;
  4. use App\Event\Purchasing\OrderDatasheetImportEvent;
  5. use App\Event\Purchasing\OrderEventInterface;
  6. use App\Repository\Scheduler\TaskRepository;
  7. use DateTime;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. readonly class OrderDatasheetImportCompletionSubscriber implements EventSubscriberInterface
  11. {
  12.     public function __construct(
  13.         private EntityManagerInterface $entityManager,
  14.         private TaskRepository         $taskRepository,
  15.     ) {}
  16.     public static function getSubscribedEvents(): array
  17.     {
  18.         return [
  19.             OrderDatasheetImportEvent::IDENTIFIER => 'process',
  20.         ];
  21.     }
  22.     public function process(OrderEventInterface $event): void
  23.     {
  24.         $order $event->getOrder();
  25.         $purchaseOrderDatasheetImportTask $this->taskRepository->getPurchaseOrderDatasheetImportTask(order$ordercreateIfNulltrue);
  26.         $purchaseOrderDatasheetImportTask->setStatus(TaskStatus::COMPLETED);
  27.         $purchaseOrderDatasheetImportTask->setCompletedOn(new DateTime());
  28.         $this->entityManager->persist($purchaseOrderDatasheetImportTask);
  29.         $this->entityManager->flush();
  30.     }
  31. }