<?php
namespace App\EventSubscriber\Order;
use Factory\CheckoutBundle\Model\AbstractOrder;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RequestStack;
use Factory\OrderManagementBundle\Classes\CsrEvents;
use Factory\SupportBundle\Contract\AbstractEvent;
use Pimcore\Model\DataObject\Objectbrick\Data\OrderAditionalEmailAddress;
use Pimcore\Model\DataObject\Objectbrick\Data\OrderCreator;
class GeneralOrderSubscriber implements EventSubscriberInterface
{
/**
* @var RequestStack
*/
protected $requestStack;
public static function getSubscribedEvents()
{
return [
CsrEvents::ORDER_CUSTOMER_CHANGED => [
['cleanAdditionalOrderEmail', 10]
],
CsrEvents::ORDER_PLACED => [
['clearOrderAuthorOnQuoteConverting', 10]
],
CsrEvents::ORDER_REORDER_AFTER => [
['clearOrderAuthorOnReorder', 10]
]
];
}
public function cleanAdditionalOrderEmail(AbstractEvent $event)
{
$order = $event->getSubject();
if (!$order instanceof AbstractOrder) {
return;
}
$customized = $order->getCustomized();
/** @var OrderAditionalEmailAddress */
$additionalAddress = $customized->getOrderAditionalEmailAddress();
if (!$additionalAddress) {
$additionalAddress = new OrderAditionalEmailAddress($order);
}
$additionalAddress->setEmail('');
$order->getCustomized()->setOrderAditionalEmailAddress($additionalAddress);
$order->save();
}
public function clearOrderAuthorOnQuoteConverting(AbstractEvent $event)
{
if (!$event->hasArgument('action') || $event->getArgument('action') != 'QUOTE_TO_ORDER') {
return;
}
$order = $event->getSubject();
$this->clearOrderAuthor($order);
$order->save('clear order creator on quoute converting');
}
public function clearOrderAuthorOnReorder(AbstractEvent $event)
{
$order = $event->getSubject();
$this->clearOrderAuthor($order);
$order->save('clear order creator on reorder');
}
protected function clearOrderAuthor($order)
{
$customized = $order->getCustomized();
if (!in_array('getOrderCreator', $customized->getBrickGetters())) {
return;
}
/** @var OrderCreator */
$additionalAddress = $customized->getOrderCreator();
if (!$additionalAddress) {
$additionalAddress = new OrderCreator($order);
}
$additionalAddress->setName('');
$order->getCustomized()->setOrderCreator($additionalAddress);
}
}