<?php
namespace ProxaVinCode\Subscribers;
use ProxaVinCode\Core\Cart\CartProcessor;
use ProxaVinCode\Struct\Cart\VinCodeCartStruct;
use Shopware\Core\Checkout\Cart\Order\CartConvertedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CartConvertedSubscriber implements EventSubscriberInterface
{
const ORDER_VIN_CODE = 'proxaVinCode';
/**
* @return string[]
*/
public static function getSubscribedEvents(): array
{
return [
CartConvertedEvent::class => 'onCartConvertedEvent'
];
}
/**
* @param CartConvertedEvent $event
* @return void
*/
public function onCartConvertedEvent(CartConvertedEvent $event): void
{
$cart = $event->getCart();
$vinCodeStruct = $cart->getExtension(CartProcessor::VIN_CODE_STRUCT) ?? new VinCodeCartStruct();
$vinCode = $vinCodeStruct->getVinCode();
if (!$vinCode) {
return;
}
$data = $event->getConvertedCart();
$customFields = $data['customFields'] ?? [];
$customFields[self::ORDER_VIN_CODE] = $vinCode;
$data['customFields'] = $customFields;
$event->setConvertedCart($data);
}
}