custom/plugins/KzphSimplenote/src/Subscriber/OrderSubscriber.php line 39

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Kzph\Simplenote\Subscriber;
  4. use Shopware\Core\Checkout\Order\OrderEvents;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Event\EntityWrittenEvent;
  6. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  7. use Shopware\Core\System\SystemConfig\SystemConfigService;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. class OrderSubscriber implements EventSubscriberInterface
  11. {
  12.     private $kzphSimplenoteRepository;
  13.     private $requestStack;
  14.     private $systemConfigService;
  15.     private $config;
  16.     public function __construct(
  17.         EntityRepository $kzphSimplenoteRepository,
  18.         RequestStack $requestStack,
  19.         ?SystemConfigService $systemConfigService null
  20.     ) {
  21.         $this->kzphSimplenoteRepository $kzphSimplenoteRepository;
  22.         $this->requestStack $requestStack;
  23.         $this->systemConfigService $systemConfigService;
  24.     }
  25.     public static function getSubscribedEvents(): array
  26.     {
  27.         return [
  28.             OrderEvents::ORDER_WRITTEN_EVENT => 'onOrderWritten',
  29.         ];
  30.     }
  31.     public function onOrderWritten(EntityWrittenEvent $entityWrittenEvent): void
  32.     {
  33.         try {
  34.             $config $this->systemConfigService->get('KzphSimplenote.config');
  35.             $this->config $config;
  36.             if (($this->config['showNotefieldInCheckout'] ?? false) === false)
  37.                 return;
  38.             $writeResults $entityWrittenEvent->getWriteResults();
  39.             $request $this->requestStack->getCurrentRequest();
  40.             foreach ($writeResults as $writeResult) {
  41.                 $payload $writeResult->getPayload();
  42.                 if (@$payload['id']) {
  43.                     if (($request->get('kzphSimpleNote') ?? false)) {
  44.                         $this->kzphSimplenoteRepository->upsert([
  45.                             [
  46.                                 'id' => $payload['id'],
  47.                                 'entityId' => $payload['id'],
  48.                                 'entityType' => 'order',
  49.                                 'username' => 'System',
  50.                                 'note' => $request->get('kzphSimpleNote'),
  51.                                 'showDesktop' => 1,
  52.                                 'showMessage' => 0
  53.                             ],
  54.                         ], $entityWrittenEvent->getContext());
  55.                         return;
  56.                     }
  57.                 }
  58.             }
  59.         } catch (\Exception $e) {
  60.         }
  61.     }
  62. }