custom/plugins/EwGrecoAdministration/src/Subscriber/OrderSubscriber.php line 32

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Ew\GrecoAdministration\Subscriber;
  3. use Shopware\Core\Checkout\Cart\Event\CheckoutOrderPlacedEvent;
  4. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. class OrderSubscriber implements EventSubscriberInterface
  8. {
  9.     private EntityRepository $orderRepository;
  10.     private RequestStack $requestStack;
  11.     public function __construct(
  12.         EntityRepository $orderRepository,
  13.         RequestStack $requestStack
  14.     )
  15.     {
  16.         $this->orderRepository $orderRepository;
  17.         $this->requestStack $requestStack;
  18.     }
  19.     public static function getSubscribedEvents(): array
  20.     {
  21.         return [
  22.             CheckoutOrderPlacedEvent::class => 'onOrderPlaced'
  23.         ];
  24.     }
  25.     public function onOrderPlaced(CheckoutOrderPlacedEvent $event): void
  26.     {
  27.         try {
  28.             $session $this->requestStack->getSession();
  29.             $dcCode $session->get('dc-code'null);
  30.             $customer $event->getOrder()->getOrderCustomer();
  31.             if ($customer) {
  32.                 if ($customer->getCustomer()->dcCode) {
  33.                     $dcCode $customer->getCustomer()->dcCode;
  34.                 }
  35.             }
  36.             $this->orderRepository->update(
  37.                 [['id' => $event->getOrderId(), 'customFields' => ['dc_code' => $dcCode]]], $event->getContext()
  38.             );
  39.         } catch (\Exception $exception) {
  40.             error_log(print_r(array('Order subscriber error: '$exception->getMessage()), true) . "\n"3'../error.log');
  41.         }
  42.     }
  43. }