<?php
namespace AppBundle\EventListener;
use AppBundle\Exception\NotAllowedException;
use AppBundle\Workflow\OrderWorkflow;
use AppBundle\XmlGenerator\OrderPrintRequestXmlGenerator;
use Pimcore\Model\DataObject\Order;
use Symfony\Component\Workflow\Event\TransitionEvent;
use Symfony\Component\Workflow\Transition;
class OrderPreTransitionListener
{
/**
* @var OrderPrintRequestXmlGenerator
*/
protected $orderPrintRequestXmlGenerator;
public function __construct(OrderPrintRequestXmlGenerator $orderPrintRequestXmlGenerator)
{
$this->orderPrintRequestXmlGenerator = $orderPrintRequestXmlGenerator;
}
/**
* @param TransitionEvent $transitionEvent
* @throws NotAllowedException
*/
public function onPreTransition(TransitionEvent $transitionEvent)
{
/** @var Transition $transition */
$transition = $transitionEvent->getTransition();
/** @var Order $order */
$order = $transitionEvent->getSubject();
switch ($transition->getName()) {
case OrderWorkflow::TRANSITION_TO_SEND_ORDER_TO_TWIST:
case OrderWorkflow::TRANSITION_TO_TWIST_PROCESS_FAILED:
case OrderWorkflow::TRANSITION_TO_PRINT_DONE:
// those methods are to be dynamics only
if (\Pimcore::$adminMode) {
throw new NotAllowedException('Cette Methode n\'est pas réalisable depuis le back office');
}
break;
case OrderWorkflow::TRANSITION_TO_PRINT_IN_PROCESS:
// $this->orderPrintRequestXmlGenerator->setPrinter($order->getPrinter());
break;
case OrderWorkflow::TRANSITION_TO_RETRY_ORDER:
case OrderWorkflow::TRANSITION_TO_REJECT_ORDER:
case OrderWorkflow::TRANSITION_TO_ACCEPT_ORDER:
case OrderWorkflow::TRANSITION_TO_ORDER_PRINT_READY:
// nothing to do here, all is already done by status
default:
break;
}
}
}