order admin

This commit is contained in:
Etienne Roudeix
2013-09-25 15:55:48 +02:00
parent d967242a59
commit 1ffcaa7dd4
6 changed files with 120 additions and 71 deletions

View File

@@ -300,6 +300,19 @@ class Order extends BaseAction implements EventSubscriberInterface
$event->setOrder($order);
}
/**
* @param OrderEvent $event
*/
public function updateDeliveryRef(OrderEvent $event)
{
$order = $event->getOrder();
$order->setDeliveryRef($event->getDeliveryRef());
$order->save();
$event->setOrder($order);
}
/**
* Returns an array of event names this subscriber wants to listen to.
*
@@ -330,6 +343,7 @@ class Order extends BaseAction implements EventSubscriberInterface
TheliaEvents::ORDER_PAY => array("create", 128),
TheliaEvents::ORDER_BEFORE_PAYMENT => array("sendOrderEmail", 128),
TheliaEvents::ORDER_UPDATE_STATUS => array("updateStatus", 128),
TheliaEvents::ORDER_UPDATE_DELIVERY_REF => array("updateDeliveryRef", 128),
);
}

View File

@@ -70,10 +70,18 @@
<requirement key="order_id">\d+</requirement>
</route>
<route id="admin.order.update.status" path="/admin/order/update/status">
<route id="admin.order.list.update.status" path="/admin/order/update/status">
<default key="_controller">Thelia\Controller\Admin\OrderController::updateStatus</default>
</route>
<route id="admin.order.update.status" path="/admin/order/update/{order_id}/status">
<default key="_controller">Thelia\Controller\Admin\OrderController::updateStatus</default>
</route>
<route id="admin.order.update.deliveryRef" path="/admin/order/update/{order_id}/delivery-ref">
<default key="_controller">Thelia\Controller\Admin\OrderController::updateDeliveryRef</default>
</route>
<!-- end order management -->
<!-- Categories management -->

View File

@@ -28,6 +28,7 @@ use Thelia\Core\Event\TheliaEvents;
use Thelia\Core\Translation\Translator;
use Thelia\Model\OrderQuery;
use Thelia\Model\OrderStatusQuery;
use Thelia\Tools\URL;
/**
* Class OrderController
@@ -50,17 +51,22 @@ class OrderController extends BaseAdminController
));
}
public function updateStatus()
public function updateStatus($order_id = null)
{
if (null !== $response = $this->checkAuth("admin.order.update")) return $response;
$message = null;
try {
$orderId = $this->getRequest()->get("order_id");
$order = OrderQuery::create()->findPk($orderId);
if($order_id !== null) {
$order_id = $order_id;
} else {
$order_id = $this->getRequest()->get("order_id");
}
$statusId = $this->getRequest()->get("status_id");
$order = OrderQuery::create()->findPk($order_id);
$statusId = $this->getRequest()->request->get("status_id");
$status = OrderStatusQuery::create()->findPk($statusId);
if(null === $order) {
@@ -90,12 +96,42 @@ class OrderController extends BaseAdminController
$params["order_page"] = $browsedPage;
$this->redirectToRoute("admin.order.list", $params);
} else {
$params["order_id"] = $orderId;
$this->redirectToRoute("admin.order.update.view", $params);
$params["order_id"] = $order_id;
$this->redirect(URL::getInstance()->absoluteUrl($this->getRoute("admin.order.update.view", $params)));
}
}
public function updateDeliveryRef($order_id)
{
if (null !== $response = $this->checkAuth("admin.order.update")) return $response;
$message = null;
try {
$order = OrderQuery::create()->findPk($order_id);
$deliveryRef = $this->getRequest()->get("delivery_ref");
if(null === $order) {
throw new \InvalidArgumentException("The order you want to update status does not exist");
}
$event = new OrderEvent($order);
$event->setDeliveryRef($deliveryRef);
$this->dispatch(TheliaEvents::ORDER_UPDATE_DELIVERY_REF, $event);
} catch(\Exception $e) {
$message = $e->getMessage();
}
$params = array();
if ($message) {
$params["update_status_error_message"] = $message;
}
$params["order_id"] = $order_id;
$this->redirect(URL::getInstance()->absoluteUrl($this->getRoute("admin.order.update.view", $params)));
}
}

View File

@@ -36,6 +36,7 @@ class OrderEvent extends ActionEvent
protected $postage = null;
protected $ref = null;
protected $status = null;
protected $deliveryRef = null;
/**
* @param Order $order
@@ -117,6 +118,14 @@ class OrderEvent extends ActionEvent
$this->status = $status;
}
/**
* @param $deliveryRef
*/
public function setDeliveryRef($deliveryRef)
{
$this->deliveryRef = $deliveryRef;
}
/**
* @return null|Order
*/
@@ -188,4 +197,12 @@ class OrderEvent extends ActionEvent
{
return $this->status;
}
/**
* @return null|string
*/
public function getDeliveryRef()
{
return $this->deliveryRef;
}
}

View File

@@ -302,6 +302,7 @@ final class TheliaEvents
const ORDER_BEFORE_PAYMENT = "action.order.beforePayment";
const ORDER_UPDATE_STATUS = "action.order.updateStatus";
const ORDER_UPDATE_DELIVERY_REF = "action.order.updateDeliveryRef";
const ORDER_PRODUCT_BEFORE_CREATE = "action.orderProduct.beforeCreate";
const ORDER_PRODUCT_AFTER_CREATE = "action.orderProduct.afterCreate";