custom/plugins/OkeonlineKejeDeliveryDatePicker/src/Storefront/Subscriber/CartConvertedEventSubscriber.php line 34

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Okeonline\KejeDeliveryDatePicker\Storefront\Subscriber;
  3. use Okeonline\KejeDeliveryDatePicker\Core\Checkout\Cart\DeliveryDateCartProcessor;
  4. use Okeonline\KejeDeliveryDatePicker\OkeonlineKejeDeliveryDatePicker;
  5. use Shopware\Core\Checkout\Cart\Order\CartConvertedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. class CartConvertedEventSubscriber implements EventSubscriberInterface
  9. {
  10.     /**
  11.      * @var RequestStack
  12.      */
  13.     private $request;
  14.     public function __construct(
  15.         RequestStack $request
  16.     )
  17.     {
  18.         $this->request $request;
  19.     }
  20.     public static function getSubscribedEvents(): array
  21.     {
  22.         return [
  23.             CartConvertedEvent::class => 'multipleHandlers'
  24.         ];
  25.     }
  26.     public function multipleHandlers(CartConvertedEvent $event)
  27.     {
  28.         $this->addDeliveryDateToCustomFields($event);
  29.         $this->addExtraDataToCustomFields($event);
  30.     }
  31.     public function addDeliveryDateToCustomFields(CartConvertedEvent $event)
  32.     {
  33.         $convertedCart $event->getConvertedCart();
  34.         $selectedDeliveryDate "";
  35.         $deliveryDateLineItem $event->getCart()->getLineItems()->get(DeliveryDateCartProcessor::UNIQUE_ID);
  36.         if($deliveryDateLineItem)
  37.         {
  38.             if(array_key_exists(DeliveryDateCartProcessor::TYPE$deliveryDateLineItem->getPayload())) {
  39.                 $selectedDeliveryDate $deliveryDateLineItem->getPayload()[DeliveryDateCartProcessor::TYPE];
  40.             }
  41.         }
  42.         $currentCustomFields $convertedCart['customFields'] ?? [];
  43.         $customFields array_merge($currentCustomFields, [OkeonlineKejeDeliveryDatePicker::CUSTOM_FIELD_TECH_NAME => $selectedDeliveryDate]);
  44.         $event->setConvertedCart(array_merge($convertedCart, ['customFields' => $customFields]));
  45.     }
  46.     public function addExtraDataToCustomFields(CartConvertedEvent $event)
  47.     {
  48.         $extraData null;
  49.         if(!$this->request->getCurrentRequest()->request->has('oo_checkout_extra_data_'))
  50.         {
  51.             return;
  52.         }
  53.         $extraDataFromRequest $this->request->getCurrentRequest()->request->get('oo_checkout_extra_data_');
  54.         foreach ($extraDataFromRequest as $key => $value)
  55.         {
  56.             $extraData['oo_checkout_extra_data_'.$key] = $value;
  57.         }
  58.         $convertedCart $event->getConvertedCart();
  59.         $currentCustomFields $convertedCart['customFields'] ?? [];
  60.         $customFields array_merge($currentCustomFields$extraData);
  61.         $event->setConvertedCart(array_merge($convertedCart, ['customFields' => $customFields]));
  62.     }
  63. }