custom/plugins/ProxaVinCode/src/Subscribers/CartConvertedSubscriber.php line 28

Open in your IDE?
  1. <?php
  2. namespace ProxaVinCode\Subscribers;
  3. use ProxaVinCode\Core\Cart\CartProcessor;
  4. use ProxaVinCode\Struct\Cart\VinCodeCartStruct;
  5. use Shopware\Core\Checkout\Cart\Order\CartConvertedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. class CartConvertedSubscriber implements EventSubscriberInterface
  8. {
  9.     const ORDER_VIN_CODE 'proxaVinCode';
  10.     /**
  11.      * @return string[]
  12.      */
  13.     public static function getSubscribedEvents(): array
  14.     {
  15.         return [
  16.             CartConvertedEvent::class => 'onCartConvertedEvent'
  17.         ];
  18.     }
  19.     /**
  20.      * @param CartConvertedEvent $event
  21.      * @return void
  22.      */
  23.     public function onCartConvertedEvent(CartConvertedEvent $event): void
  24.     {
  25.         $cart $event->getCart();
  26.         $vinCodeStruct $cart->getExtension(CartProcessor::VIN_CODE_STRUCT) ?? new VinCodeCartStruct();
  27.         $vinCode $vinCodeStruct->getVinCode();
  28.         if (!$vinCode) {
  29.             return;
  30.         }
  31.         $data $event->getConvertedCart();
  32.         $customFields $data['customFields'] ?? [];
  33.         $customFields[self::ORDER_VIN_CODE] = $vinCode;
  34.         $data['customFields'] = $customFields;
  35.         $event->setConvertedCart($data);
  36.     }
  37. }