custom/static-plugins/K3nExtendVioRepresentativeLogin/src/Subscriber/OrderPlacedSubscriber.php line 43

Open in your IDE?
  1. <?php
  2. namespace K3nExtendVioRepresentativeLogin\Subscriber;
  3. use Shopware\Core\Checkout\Cart\Event\CheckoutOrderPlacedEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\RequestStack;
  6. use Symfony\Component\HttpFoundation\Session\Session;
  7. use VioRepresentativeLogin\Core\Services\AgentService;
  8. use VioRepresentativeLogin\Core\System\SalesChannel\Context\SalesChannelContextFactory;
  9. use VioRepresentativeLogin\Entity\Agent\AgentEntity;
  10. class OrderPlacedSubscriber implements EventSubscriberInterface
  11. {
  12.     private RequestStack $requestStack;
  13.     private Session $session;
  14.     private SalesChannelContextFactory $salesChannelContextFactory;
  15.     private AgentService $agentService;
  16.     public function __construct(
  17.         RequestStack $requestStack,
  18.         Session $session,
  19.         SalesChannelContextFactory $salesChannelContextFactory,
  20.         AgentService $agentService
  21.     ) {
  22.         $this->requestStack               $requestStack;
  23.         $this->session                    $session;
  24.         $this->salesChannelContextFactory $salesChannelContextFactory;
  25.         $this->agentService               $agentService;
  26.     }
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             CheckoutOrderPlacedEvent::class => 'onOrderPlaced'
  31.         ];
  32.     }
  33.     public function onOrderPlaced(CheckoutOrderPlacedEvent $event): void
  34.     {
  35.         $merchantInput  $this->requestStack->getCurrentRequest()->request->get('merchantInput');
  36.         $swContextToken $this->session->get('sw-context-token');
  37.         if(!$swContextToken) {
  38.             $swContextToken $this->requestStack->getCurrentRequest()->headers->get('sw-context-token');
  39.         }
  40.         $salesChannelId $this->session->get('sw-sales-channel-id');
  41.         if(!$salesChannelId) {
  42.             $salesChannelId $event->getOrder()->getSalesChannelId();
  43.         }
  44.         $salesChannelContext $this->salesChannelContextFactory->create($swContextToken$salesChannelId);
  45.         try {
  46.             $agent $this->agentService->getAgentByContext($salesChannelContext);
  47.         } catch (\Throwable $th) {
  48.             $agent false;
  49.         }
  50.         if ($agent instanceof AgentEntity) {
  51.             $mailRecipients $event->getMailStruct()->getRecipients();
  52.             $mailRecipients[$agent->getEmail()] = $agent->getFirstName() . ' ' $agent->getLastName();
  53.             $event->getMailStruct()->setRecipients($mailRecipients);
  54.         }
  55.         if ($merchantInput) {
  56.             $merchantInputData explode(","$merchantInput);
  57.             $firstName ltrim($merchantInputData[0]);
  58.             $lastName  ltrim($merchantInputData[1]);
  59.             $email     ltrim($merchantInputData[2]);
  60.             $mailRecipients $event->getMailStruct()->getRecipients();
  61.             $mailRecipients[$email] = $firstName ' ' $lastName;
  62.             $event->getMailStruct()->setRecipients($mailRecipients);
  63.         }
  64.     }
  65. }