<?php
namespace CioFormBuilder\Subscriber;
use CioProductCustomerInputs\Service\SessionService;
use Shopware\Core\Checkout\Cart\Error\IncompleteLineItemError;
use Shopware\Core\Checkout\Cart\Event\AfterLineItemAddedEvent;
use Shopware\Core\Checkout\Cart\Event\BeforeLineItemAddedEvent;
use Shopware\Core\Checkout\Cart\Event\CartChangedEvent;
use Shopware\Core\Content\Product\Aggregate\ProductManufacturer\ProductManufacturerEntity;
use Shopware\Core\Content\Product\ProductEntity;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use Shopware\Storefront\Framework\Routing\Router;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\RequestStack;
class AddToCartSubscriber implements EventSubscriberInterface
{
private ContainerInterface $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
}
public static function getSubscribedEvents(): array
{
return [
BeforeLineItemAddedEvent::class => 'onBeforeLineItemAddedEvent'
];
}
public function onBeforeLineItemAddedEvent(BeforeLineItemAddedEvent $event)
{
$lineItem = clone $event->getLineItem();
/** @var EntityRepositoryInterface $productRepository */
$productRepository = $this->container->get('product.repository');
$criteria = (new Criteria())->addFilter(new EqualsFilter('id', $lineItem->getReferencedId()))->addAssociation('manufacturer');
/** @var ProductEntity|null $product */
$product = $productRepository->search($criteria, $event->getContext())->first();
if (!is_null($product) && is_array($product->getCustomFields())) {
$customFields = $product->getCustomFields();
if(isset($customFields['custom_event_article'])){
if(isset($customFields['custom_event_basic_package']) && isset($customFields['custom_event_basic_package_text']) && !empty(trim($customFields['custom_event_basic_package_text']) )) {
$event->getLineItem()->setPayloadValue('custom_event_basic_package_text', $customFields['custom_event_basic_package_text']);
}
}
}
}
}