order admin
This commit is contained in:
@@ -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),
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -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 -->
|
||||
|
||||
@@ -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)));
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user