custom/static-plugins/CioFormBuilder/src/Subscriber/AddToCartSubscriber.php line 37

Open in your IDE?
  1. <?php
  2. namespace CioFormBuilder\Subscriber;
  3. use CioProductCustomerInputs\Service\SessionService;
  4. use Shopware\Core\Checkout\Cart\Error\IncompleteLineItemError;
  5. use Shopware\Core\Checkout\Cart\Event\AfterLineItemAddedEvent;
  6. use Shopware\Core\Checkout\Cart\Event\BeforeLineItemAddedEvent;
  7. use Shopware\Core\Checkout\Cart\Event\CartChangedEvent;
  8. use Shopware\Core\Content\Product\Aggregate\ProductManufacturer\ProductManufacturerEntity;
  9. use Shopware\Core\Content\Product\ProductEntity;
  10. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
  11. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  12. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  13. use Shopware\Storefront\Framework\Routing\Router;
  14. use Symfony\Component\DependencyInjection\ContainerInterface;
  15. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  16. use Symfony\Component\HttpFoundation\RedirectResponse;
  17. use Symfony\Component\HttpFoundation\RequestStack;
  18. class AddToCartSubscriber implements EventSubscriberInterface
  19. {
  20.     private ContainerInterface $container;
  21.     public function __construct(ContainerInterface $container)
  22.     {
  23.         $this->container $container;
  24.     }
  25.     public static function getSubscribedEvents(): array
  26.     {
  27.         return [
  28.             BeforeLineItemAddedEvent::class => 'onBeforeLineItemAddedEvent'
  29.         ];
  30.     }
  31.     public function onBeforeLineItemAddedEvent(BeforeLineItemAddedEvent $event)
  32.     {
  33.         $lineItem = clone $event->getLineItem();
  34.         /** @var EntityRepositoryInterface $productRepository */
  35.         $productRepository $this->container->get('product.repository');
  36.         $criteria = (new Criteria())->addFilter(new EqualsFilter('id'$lineItem->getReferencedId()))->addAssociation('manufacturer');
  37.         /** @var ProductEntity|null $product */
  38.         $product $productRepository->search($criteria$event->getContext())->first();
  39.         if (!is_null($product) && is_array($product->getCustomFields())) {
  40.             $customFields $product->getCustomFields();
  41.             if(isset($customFields['custom_event_article'])){
  42.                 if(isset($customFields['custom_event_basic_package']) && isset($customFields['custom_event_basic_package_text']) && !empty(trim($customFields['custom_event_basic_package_text']) )) {
  43.                     $event->getLineItem()->setPayloadValue('custom_event_basic_package_text'$customFields['custom_event_basic_package_text']);
  44.                 }
  45.             }
  46.         }
  47.     }
  48. }