custom/plugins/NetiNextEasyCouponDesigns/src/Subscriber/Checkout.php line 29

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace NetInventors\NetiNextEasyCouponDesigns\Subscriber;
  4. use NetInventors\NetiNextEasyCoupon\Events\CheckoutVoucherCreatedEvent;
  5. use NetInventors\NetiNextEasyCouponDesigns\Service\Task;
  6. use NetInventors\NetiNextEasyCouponDesigns\Struct\LineItemStruct;
  7. use Shopware\Core\Checkout\Order\Aggregate\OrderLineItem\OrderLineItemEntity;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class Checkout implements EventSubscriberInterface
  10. {
  11.     private Task $taskHandler;
  12.     public function __construct(Task $taskHandler)
  13.     {
  14.         $this->taskHandler $taskHandler;
  15.     }
  16.     public static function getSubscribedEvents(): array
  17.     {
  18.         return [
  19.             CheckoutVoucherCreatedEvent::class => 'onCheckoutVoucherCreated',
  20.         ];
  21.     }
  22.     public function onCheckoutVoucherCreated(CheckoutVoucherCreatedEvent $event): void
  23.     {
  24.         foreach ($event->getVoucherData() as $voucher) {
  25.             /** @var string $orderLineItemId */
  26.             $orderLineItemId $voucher['transactions'][0]['orderLineItemId'];
  27.             /** @var OrderLineItemEntity $orderLineItem */
  28.             $orderLineItem $event->getOrderLineItems()->get($orderLineItemId);
  29.             $payload       $orderLineItem->getPayload();
  30.             if (
  31.                 !isset($payload[LineItemStruct::PAYLOAD_NAME]['selectedDesign'])
  32.                 || !\is_string($payload[LineItemStruct::PAYLOAD_NAME]['selectedDesign'])
  33.                 || '' === $payload[LineItemStruct::PAYLOAD_NAME]['selectedDesign']
  34.             ) {
  35.                 continue;
  36.             }
  37.             $this->taskHandler->createTask($voucher$orderLineItem$event->getContext());
  38.         }
  39.     }
  40. }