src/EventSubscriber/Expediting/FreightDatasheetImportSubscriber.php line 28
<?php
namespace App\EventSubscriber\Expediting;
use App\Doctrine\Type\Scheduler\TaskStatus;
use App\Entity\Sales\WorkOrder;
use App\Entity\Scheduler\Task;
use App\Event\Expediting\FreightDatasheetImportEvent;
use App\Repository\Scheduler\TaskRepository;
use DateTime;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
readonly class FreightDatasheetImportSubscriber implements EventSubscriberInterface
{
public function __construct(
private EntityManagerInterface $entityManager,
private TaskRepository $taskRepository,
) {}
public static function getSubscribedEvents(): array
{
return [
FreightDatasheetImportEvent::IDENTIFIER => ['process', 0],
];
}
public function process(FreightDatasheetImportEvent $event): void
{
$datasheet = $event->getDatasheet();
/** @var WorkOrder $workOrder */
$workOrder = $this->entityManager->getRepository(WorkOrder::class)->findOneBy([
'reference' => $datasheet->workOrderReference,
]);
$datasheetImportTask = $this->taskRepository->getFreightDatasheetImportTask($workOrder);
if (!$datasheetImportTask instanceof Task) {
return;
}
$datasheetImportTask->setStatus(TaskStatus::COMPLETED);
$datasheetImportTask->setCompletedOn(new DateTime());
$this->entityManager->persist($datasheetImportTask);
$this->entityManager->flush();
}
}