custom/static-plugins/K3nAdditionalOrderFields/src/Subscriber/CheckoutOrderPlaced.php line 55

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace K3n\AdditionalOrderFields\Subscriber;
  4. use Shopware\Core\Checkout\Cart\Event\CheckoutOrderPlacedEvent;
  5. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\RequestStack;
  8. class CheckoutOrderPlaced implements EventSubscriberInterface
  9. {
  10.     /**
  11.      * @var RequestStack
  12.      */
  13.     private $requestStack;
  14.     /**
  15.      * @var EntityRepositoryInterface
  16.      */
  17.     private $orderRepository;
  18.     /**
  19.      *
  20.      * @param EntityRepositoryInterface $orderRepository
  21.      * @param RequestStack $requestStack
  22.      */
  23.     public function __construct(
  24.         EntityRepositoryInterface $orderRepository,
  25.         RequestStack $requestStack
  26.     ) {
  27.         $this->orderRepository $orderRepository;
  28.         $this->requestStack $requestStack;
  29.     }
  30.     /**
  31.      *
  32.      * @return array
  33.      */
  34.     public static function getSubscribedEvents(): array
  35.     {
  36.         return [
  37.             CheckoutOrderPlacedEvent::class => 'onCheckoutOrderPlaced'
  38.         ];
  39.     }
  40.     /**
  41.      *
  42.      * @param CheckoutOrderPlacedEvent $event
  43.      * @return void
  44.      */
  45.     public function onCheckoutOrderPlaced(CheckoutOrderPlacedEvent $event): void
  46.     {
  47.         $order $event->getOrder();
  48.         $additionalField1 $this->requestStack->getCurrentRequest()->request->get('scha1-additionalconfirmfield1');
  49.         $additionalField2 $this->requestStack->getCurrentRequest()->request->get('scha1-additionalconfirmfield2');
  50.         $additionalField3 $this->requestStack->getCurrentRequest()->request->get('scha1-additionalconfirmfield3');
  51.         $additionalField4 $this->requestStack->getCurrentRequest()->request->get('scha1-additionalconfirmfield4');
  52.         $additionalField5 $this->requestStack->getCurrentRequest()->request->get('scha1-additionalconfirmfield5');
  53.         $k3n_order_fields_callback $this->requestStack->getCurrentRequest()->request->get('k3n_order_fields_callback');
  54.         $this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['scha1-additionalconfirmfield1' => $additionalField1] ]], $event->getContext());
  55.         $this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['scha1-additionalconfirmfield2' => $additionalField2] ]], $event->getContext());
  56.         $this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['scha1-additionalconfirmfield3' => $additionalField3] ]], $event->getContext());
  57.         $this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['scha1-additionalconfirmfield4' => $additionalField4] ]], $event->getContext());
  58.         $this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['scha1-additionalconfirmfield5' => $additionalField5] ]], $event->getContext());
  59.         $this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['k3n_order_fields_callback' => $k3n_order_fields_callback] ]], $event->getContext());
  60.         $existingCustomFields $event->getOrder()->getCustomFields();
  61.         if (!is_array($existingCustomFields)) {
  62.             $existingCustomFields = [];
  63.         }
  64.         /*
  65.          * add delivery date
  66.          */
  67.         $additionalFields = [
  68.          'scha1-additionalconfirmfield1' => $additionalField1,
  69.          'scha1-additionalconfirmfield2' => $additionalField2,
  70.          'scha1-additionalconfirmfield3' => $additionalField3,
  71.          'scha1-additionalconfirmfield4' => $additionalField4,
  72.          'scha1-additionalconfirmfield5' => $additionalField5,
  73.         ];
  74.         $mergedCustomFields array_merge($existingCustomFields$additionalFields);
  75.         $event->getOrder()->setCustomFields($mergedCustomFields);
  76.     }
  77. }