<?php
declare(strict_types=1);
namespace K3n\AdditionalOrderFields\Subscriber;
use Shopware\Core\Checkout\Cart\Event\CheckoutOrderPlacedEvent;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepositoryInterface;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RequestStack;
class CheckoutOrderPlaced implements EventSubscriberInterface
{
/**
* @var RequestStack
*/
private $requestStack;
/**
* @var EntityRepositoryInterface
*/
private $orderRepository;
/**
*
* @param EntityRepositoryInterface $orderRepository
* @param RequestStack $requestStack
*/
public function __construct(
EntityRepositoryInterface $orderRepository,
RequestStack $requestStack
) {
$this->orderRepository = $orderRepository;
$this->requestStack = $requestStack;
}
/**
*
* @return array
*/
public static function getSubscribedEvents(): array
{
return [
CheckoutOrderPlacedEvent::class => 'onCheckoutOrderPlaced'
];
}
/**
*
* @param CheckoutOrderPlacedEvent $event
* @return void
*/
public function onCheckoutOrderPlaced(CheckoutOrderPlacedEvent $event): void
{
$order = $event->getOrder();
$additionalField1 = $this->requestStack->getCurrentRequest()->request->get('scha1-additionalconfirmfield1');
$additionalField2 = $this->requestStack->getCurrentRequest()->request->get('scha1-additionalconfirmfield2');
$additionalField3 = $this->requestStack->getCurrentRequest()->request->get('scha1-additionalconfirmfield3');
$additionalField4 = $this->requestStack->getCurrentRequest()->request->get('scha1-additionalconfirmfield4');
$additionalField5 = $this->requestStack->getCurrentRequest()->request->get('scha1-additionalconfirmfield5');
$k3n_order_fields_callback = $this->requestStack->getCurrentRequest()->request->get('k3n_order_fields_callback');
$this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['scha1-additionalconfirmfield1' => $additionalField1] ]], $event->getContext());
$this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['scha1-additionalconfirmfield2' => $additionalField2] ]], $event->getContext());
$this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['scha1-additionalconfirmfield3' => $additionalField3] ]], $event->getContext());
$this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['scha1-additionalconfirmfield4' => $additionalField4] ]], $event->getContext());
$this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['scha1-additionalconfirmfield5' => $additionalField5] ]], $event->getContext());
$this->orderRepository->update([['id' => $order->getId(), 'customFields' => ['k3n_order_fields_callback' => $k3n_order_fields_callback] ]], $event->getContext());
$existingCustomFields = $event->getOrder()->getCustomFields();
if (!is_array($existingCustomFields)) {
$existingCustomFields = [];
}
/*
* add delivery date
*/
$additionalFields = [
'scha1-additionalconfirmfield1' => $additionalField1,
'scha1-additionalconfirmfield2' => $additionalField2,
'scha1-additionalconfirmfield3' => $additionalField3,
'scha1-additionalconfirmfield4' => $additionalField4,
'scha1-additionalconfirmfield5' => $additionalField5,
];
$mergedCustomFields = array_merge($existingCustomFields, $additionalFields);
$event->getOrder()->setCustomFields($mergedCustomFields);
}
}