added order preparation event and method to processor.

This commit is contained in:
Paweł Jędrzejewski 2011-11-02 19:16:37 +01:00
parent 3b86f5e582
commit 6380f9fe67
4 changed files with 32 additions and 10 deletions

View file

@ -35,6 +35,9 @@ class OrderController extends ContainerAware
$form = $this->container->get('form.factory')->create($this->container->get('sylius_sales.form.type.order'));
$form->setData($order);
$this->container->get('event_dispatcher')->dispatch(SyliusSalesEvents::ORDER_PREPARE, new FilterOrderEvent($order));
$this->container->get('sylius_sales.processor')->prepare($order);
if ('POST' == $request->getMethod()) {
$form->bindRequest($request);

View file

@ -18,13 +18,14 @@ namespace Sylius\Bundle\SalesBundle\EventDispatcher;
*/
final class SyliusSalesEvents
{
const ORDER_CREATE = 'sylius_sales.event.order.create';
const ORDER_UPDATE = 'sylius_sales.event.order.update';
const ORDER_DELETE = 'sylius_sales.event.order.delete';
const ORDER_CLOSE = 'sylius_sales.event.order.close';
const ORDER_OPEN = 'sylius_sales.event.order.close';
const ORDER_CONFIRM = 'sylius_sales.event.order.confirm';
const ORDER_PROCESS = 'sylius_sales.event.order.process';
const ORDER_PLACE = 'sylius_sales.event.order.place';
const ORDER_CREATE = 'sylius_sales.event.order.create';
const ORDER_UPDATE = 'sylius_sales.event.order.update';
const ORDER_DELETE = 'sylius_sales.event.order.delete';
const ORDER_CLOSE = 'sylius_sales.event.order.close';
const ORDER_OPEN = 'sylius_sales.event.order.close';
const ORDER_CONFIRM = 'sylius_sales.event.order.confirm';
const ORDER_PREPARE = 'sylius_sales.event.order.prepare';
const ORDER_PROCESS = 'sylius_sales.event.order.process';
const ORDER_PLACE = 'sylius_sales.event.order.place';
const ORDER_STATUS = 'sylius_sales.event.order.status';
}

View file

@ -20,6 +20,13 @@ use Sylius\Bundle\SalesBundle\Model\OrderInterface;
*/
interface OperationInterface
{
/**
* Prepares order for processing.
*
* @param OrderInterface $order
*/
function prepare(OrderInterface $order);
/**
* Processes order.
*

View file

@ -28,6 +28,19 @@ class Processor
*/
private $operations = array();
/**
* Prepares order for processing.
* Calls all operations.
*
* @param OrderInterface $order
*/
public function process(OrderInterface $order)
{
foreach ($this->operations as $operation) {
$operation->prepare($order);
}
}
/**
* Processes order. Calls all operations.
*
@ -38,8 +51,6 @@ class Processor
foreach ($this->operations as $operation) {
$operation->process($order);
}
return $order;
}
/**