Files
2025-08-02 16:30:27 +02:00

75 lines
1.9 KiB
PHP

<?php
declare(strict_types=1);
namespace External\ZNZBundle\EventSubscriber\Ordering;
use External\ZNZBundle\Util\Order\ZNZOrderUtil;
use External\ZNZBundle\Util\ZNZLogger;
use KupShop\KupShopBundle\Config;
use KupShop\OrderingBundle\Event\OrderEvent;
use KupShop\OrderingBundle\Util\Order\OrderUtil;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class OrderSubscriber implements EventSubscriberInterface
{
public function __construct(
private ZNZOrderUtil $znzOrderUtil,
private ZNZLogger $logger,
private readonly OrderUtil $orderUtil,
) {
}
public static function getSubscribedEvents(): array
{
return [
OrderEvent::ORDER_CREATED => [
['orderCreated', 200],
],
OrderEvent::ORDER_STATUS_CHANGED => [
['subtractItemsFromStore', 255],
],
];
}
/**
* Obecna podpora pridani flagu k objednavce pro ZNZ.
*
* V kosiku staci mit checkbox s nazvem cart_data[order_flags][xx] a objednavce se tak pri zaskrtnuti
* nastavi flag.
*/
public function orderCreated(OrderEvent $event): void
{
$cfg = Config::get();
$flags = $event->getCart()?->getData('order_flags') ?: [];
foreach ($flags as $flag => $_) {
if (!isset($cfg['Order']['Flags'][$flag])) {
continue;
}
$this->orderUtil->addFlag(
$event->getOrder(),
$flag,
);
}
}
public function subtractItemsFromStore(OrderEvent $event): void
{
$order = $event->getOrder();
// pouze u nove objednavky
if (!($order->status_previous == -1 && $order->status == 0)) {
return;
}
try {
$this->znzOrderUtil->subtractOrderItemsFromStore($order);
} catch (\Throwable $e) {
$this->logger->log($e);
}
}
}