custom/plugins/GbmedEnev/src/Subscriber/CheckoutPage.php line 45

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. /**
  3.  * gb media
  4.  * All Rights Reserved.
  5.  *
  6.  * Unauthorized copying of this file, via any medium is strictly prohibited.
  7.  * The content of this file is proprietary and confidential.
  8.  *
  9.  * @category       Shopware
  10.  * @package        Shopware_Plugins
  11.  * @subpackage     GbmedEnev
  12.  * @copyright      Copyright (c) 2019, gb media
  13.  * @license        proprietary
  14.  * @author         Giuseppe Bottino
  15.  * @link           http://www.gb-media.biz
  16.  */
  17. namespace Gbmed\Enev\Subscriber;
  18. use Gbmed\Enev\Core\Content\Enev\EnevCollection;
  19. use Gbmed\Enev\Core\Content\Enev\EnevDefinition;
  20. use Gbmed\Enev\Core\Content\Enev\EnevEntity;
  21. use Gbmed\Enev\Core\Content\Enev\EnevHydrator;
  22. use Gbmed\Enev\Service\Product as ProductService;
  23. use Shopware\Core\Checkout\Cart\LineItem\LineItem;
  24. use Shopware\Core\Checkout\Order\Aggregate\OrderLineItem\OrderLineItemCollection;
  25. use Shopware\Core\Content\Media\MediaEntity;
  26. use Shopware\Storefront\Page\Checkout\Finish\CheckoutFinishPageLoadedEvent;
  27. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  28. use Exception;
  29. class CheckoutPage implements EventSubscriberInterface
  30. {
  31.     public static function getSubscribedEvents(): array
  32.     {
  33.         return [
  34.             CheckoutFinishPageLoadedEvent::class => 'onCheckoutFinishPageLoadedEvent',
  35.         ];
  36.     }
  37.     /**
  38.      * @param CheckoutFinishPageLoadedEvent $event
  39.      * @throws Exception
  40.      */
  41.     public function onCheckoutFinishPageLoadedEvent(CheckoutFinishPageLoadedEvent $event): void
  42.     {
  43.         $lineItems $event->getPage()->getOrder()->getLineItems();
  44.         if (!$lineItems) {
  45.             return;
  46.         }
  47.         $this->addExtension($lineItems);
  48.     }
  49.     /**
  50.      * helper to add extension
  51.      *
  52.      * @param OrderLineItemCollection $lineItems
  53.      * @throws Exception
  54.      */
  55.     protected function addExtension(
  56.         OrderLineItemCollection $lineItems
  57.     ): void {
  58.         /** @var LineItem $lineItem */
  59.         foreach ($lineItems as $lineItem) {
  60.             $payload $lineItem->getPayload();
  61.             if (!isset($payload['extensions']) || !isset($payload['extensions'][EnevDefinition::propertyName()])) {
  62.                 continue;
  63.             }
  64.             $collection $payload['extensions'][EnevDefinition::propertyName()];
  65.             $enevCollection null;
  66.             if (is_array($collection)) {
  67.                 $enevCollection = new EnevCollection();
  68.                 foreach ($collection as $item) {
  69.                     $entity = (new EnevHydrator())->assign($item);
  70.                     $enevCollection->set($item['id'], $entity);
  71.                 }
  72.             }
  73.             $lineItem->addExtension(EnevDefinition::propertyName(), $enevCollection);
  74.         }
  75.     }
  76. }