custom/plugins/NenoVisualMailEditor/src/Core/Subscriber/CheckoutOrderPlacedDataEnhancer.php line 35

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Neno\VisualMailEditor\Core\Subscriber;
  3. use Shopware\Core\Checkout\Cart\Event\CheckoutOrderPlacedEvent;
  4. use Shopware\Core\Checkout\Order\Aggregate\OrderLineItem\OrderLineItemEntity;
  5. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  6. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class CheckoutOrderPlacedDataEnhancer implements EventSubscriberInterface
  9. {
  10.     /**
  11.      * @var EntityRepositoryInterface $mediaRepository
  12.      */
  13.     private $mediaRepository;
  14.     public function __construct(EntityRepositoryInterface $mediaRepository)
  15.     {
  16.         $this->mediaRepository $mediaRepository;
  17.     }
  18.     /**
  19.      * @inheritDoc
  20.      */
  21.     public static function getSubscribedEvents()
  22.     {
  23.         return [
  24.             CheckoutOrderPlacedEvent::class => [
  25.                 ['enhanceEventData'500]
  26.             ],
  27.         ];
  28.     }
  29.     public function enhanceEventData(CheckoutOrderPlacedEvent $event): void
  30.     {
  31.         $order $event->getOrder();
  32.         if ($order) {
  33.             $lineItems $order->getLineItems();
  34.             if ($lineItems) {
  35.                 $coverMediaIds $lineItems->map(function (OrderLineItemEntity $item):?string {
  36.                     return $item->getCoverId();
  37.                 });
  38.                 $validMediaIds array_filter($coverMediaIds, function ($id) { return !empty($id); });
  39.                 // fetch cover media in batch
  40.                 $criteria = new Criteria($validMediaIds);
  41.                 $criteria->addAssociation('thumbnails');
  42.                 $resolvedCoverMedia $this->mediaRepository->search($criteria$event->getContext());
  43.                 foreach ($lineItems as $lineItem) {
  44.                     $lineItem->setCover($resolvedCoverMedia->get($lineItem->getCoverId()));
  45.                 }
  46.             }
  47.         }
  48.     }
  49. }