<?php declare(strict_types=1);
namespace Tds\Merware\Core\Checkout\Order\Subscriber;
use Shopware\Core\Checkout\Order\OrderEvents;
use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenEvent;
use Shopware\Core\Framework\DataAbstractionLayer\Exception\InconsistentCriteriaIdsException;
use Tds\Merware\Service\Core\LoggerService;
use Tds\Merware\Service\Exchange\Export\OrderService;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
/**
* Class OrderWrittenSubscriber
*
* @package Tds\Merware\Core\Checkout\Order\Subscriber
*/
class OrderWrittenSubscriber implements EventSubscriberInterface
{
/**
* @var LoggerService
*/
private $loggerService;
/**
* @var OrderService
*/
private $orderService;
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents(): array
{
return [
OrderEvents::ORDER_WRITTEN_EVENT => 'onOrderWritten'
];
}
/**
* Order constructor.
*
* @param LoggerService $loggerService
* @param OrderService $orderService
*/
public function __construct(LoggerService $loggerService, OrderService $orderService)
{
$this->loggerService = $loggerService;
$this->orderService = $orderService;
}
/**
* Function to subscribe and write order files.
*
* @param EntityWrittenEvent $event
*/
public function onOrderWritten(EntityWrittenEvent $event)
{
try {
$this->orderService->exportOrders($event->getIds());
} catch (InconsistentCriteriaIdsException $e) {
$this->loggerService->error(
sprintf(
'Fehler beim export von Bestellungen: %s',
$e->getMessage()
)
);
}
}
}