custom/plugins/ApiSee/src/Subscriber/SubmitOrderSubscriber.php line 33

Open in your IDE?
  1. <?php
  2. namespace SeeliaApiPlugin\Subscriber;
  3. use Shopware\Core\Checkout\Order\OrderEvents;
  4. use Shopware\Core\Framework\Context;
  5. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  6. use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenEvent;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. class SubmitOrderSubscriber implements EventSubscriberInterface
  10. {
  11.     protected RequestStack $request;
  12.     protected EntityRepository $orderRepository;
  13.     public function __construct(RequestStack $requestEntityRepository $orderRepository)
  14.     {
  15.         $this->request $request;
  16.         $this->orderRepository $orderRepository;
  17.     }
  18.     public static function getSubscribedEvents()
  19.     {
  20.         return [
  21.             OrderEvents::ORDER_WRITTEN_EVENT => 'dateWriteOnOrderSubmit',
  22.         ];
  23.     }
  24.     public function dateWriteOnOrderSubmit(EntityWrittenEvent $event)
  25.     {
  26.         if ($event->getWriteResults()[0]->getOperation() === 'insert') {
  27.             $deliveryDate $this->request->getCurrentRequest()->request->get('deliveryDate');
  28.         $configId $this->request->getCurrentRequest()->request->get('config_id');
  29.             if ($deliveryDate && $configId) {
  30.                 $writtenOrderId $event->getWriteResults()[0]->getPayload()['id'];
  31.                 $this->orderRepository->update([
  32.                     [
  33.                         'id' => $writtenOrderId,
  34.                         'customFields' => [
  35.                             'orderDeliveryDate' => $deliveryDate,
  36.                 'config_id' => $configId,
  37.                         ],
  38.                     ]
  39.                 ], Context::createDefaultContext());
  40.             }elseif($configId){
  41.         $writtenOrderId $event->getWriteResults()[0]->getPayload()['id'];
  42.                 $this->orderRepository->update([
  43.                     [
  44.                         'id' => $writtenOrderId,
  45.                         'customFields' => [
  46.                             'config_id' => $configId,
  47.                         ],
  48.                     ]
  49.                 ], Context::createDefaultContext());
  50.         }elseif($deliveryDate){
  51.         $writtenOrderId $event->getWriteResults()[0]->getPayload()['id'];
  52.                 $this->orderRepository->update([
  53.                     [
  54.                         'id' => $writtenOrderId,
  55.                         'customFields' => [
  56.                             'orderDeliveryDate' => $deliveryDate,
  57.                         ],
  58.                     ]
  59.                 ], Context::createDefaultContext());
  60.     }
  61.         
  62.         }
  63.     }
  64. }