custom/plugins/FTBPlugin/src/Subscriber/OrderSubscriber.php line 34

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace FTBPlugin\Subscriber;
  3. use Shopware\Core\Checkout\Cart\Order\CartConvertedEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\RequestStack;
  6. class OrderSubscriber implements EventSubscriberInterface
  7. {
  8.     private RequestStack $requestStack;
  9.     private $customerRepo;
  10.     public function __construct(RequestStack $requestStack$customerRepo)
  11.     {
  12.         $this->requestStack $requestStack;
  13.         $this->customerRepo $customerRepo;
  14.     }
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             CartConvertedEvent::class => 'loadConfirm',
  19.         ];
  20.     }
  21.     /** Wenn der Kunde die Bestellung abschließt, wird der Ansprechpartner als Custom-Field an den Kunden gehängt.
  22.      * Es werden im Twig-Template (custom/plugins/FTBPlugin/src/Resources/views/storefront/page/checkout/confirm/index.html.twig)
  23.      * die Custom-Fields ausgegeben.
  24.      * gefüllt werden
  25.      * @param CartConvertedEvent $event
  26.      * @return void
  27.      */
  28.     public function loadConfirm(CartConvertedEvent $event): void
  29.     {
  30.         // hole die abgeschickten Werte
  31.         $ls_AnsprechpartnerVorname $this->requestStack->getCurrentRequest()->request->get('AnsprechpartnerVorname');
  32.         $ls_AnsprechpartnerNachname $this->requestStack->getCurrentRequest()->request->get('AnsprechpartnerNachname');
  33.         $ls_AnsprechpartnerTelefonnummer $this->requestStack->getCurrentRequest()->request->get('AnsprechpartnerTelefonnummer');
  34.         // hole den Kunden
  35.         $lo_customer $event->getSalesChannelContext()->getCustomer();
  36.         // wenn das Feld des Ansprechpartners nicht NULL ist, update die Datenbank mit dem entsprechenden Wert (es wird
  37.         // upsert gewählt, sodass die Daten auf jeden Fall überschrieben werden
  38.         if ($ls_AnsprechpartnerVorname !== null) {
  39.             $this->customerRepo->upsert([['id' => $lo_customer->getId(), 'customFields' => ['AnsprechpartnerVorname' => strip_tags($ls_AnsprechpartnerVorname)]]], $event->getContext());
  40.         }
  41.         if ($ls_AnsprechpartnerNachname !== null) {
  42.             $this->customerRepo->upsert([['id' => $lo_customer->getId(), 'customFields' => ['AnsprechpartnerNachname' => strip_tags($ls_AnsprechpartnerNachname)]]], $event->getContext());
  43.         }
  44.         if ($ls_AnsprechpartnerTelefonnummer !== null) {
  45.             $this->customerRepo->upsert([['id' => $lo_customer->getId(), 'customFields' => ['AnsprechpartnerTelefonnummer' => strip_tags($ls_AnsprechpartnerTelefonnummer)]]], $event->getContext());
  46.         }
  47.     }
  48. }