Skip to content

Commit

Permalink
Added order comment functionality to REST API (#2315)
Browse files Browse the repository at this point in the history
  • Loading branch information
elidrissidev authored Jul 13, 2022
1 parent b2e2960 commit 1837f74
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 0 deletions.
1 change: 1 addition & 0 deletions app/code/core/Mage/Sales/Model/Api2/Order/Comment/Rest.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ abstract class Mage_Sales_Model_Api2_Order_Comment_Rest extends Mage_Sales_Model
* Parameters in request used in model (usually specified in route mask)
*/
const PARAM_ORDER_ID = 'id';
const PARAM_COMMENT_ID = 'comment_id';
/**#@-*/

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,67 @@
*/
class Mage_Sales_Model_Api2_Order_Comment_Rest_Admin_V1 extends Mage_Sales_Model_Api2_Order_Comment_Rest
{
/**
* Add comment to order
*
* @param array $data
* @return string
*/
protected function _create(array $data)
{
$orderId = $this->getRequest()->getParam(self::PARAM_ORDER_ID);
$order = $this->_loadOrderById($orderId);

$status = $data['status'] ?? false;
$comment = $data['comment'] ?? '';
$visibleOnFront = $data['is_visible_on_front'] ?? 0;
$notifyCustomer = array_key_exists('is_customer_notified', $data) ? $data['is_customer_notified'] : false;

$historyItem = $order->addStatusHistoryComment($comment, $status);
$historyItem->setIsCustomerNotified($notifyCustomer)
->setIsVisibleOnFront((int) $visibleOnFront)
->save();

try {
if ($notifyCustomer && $comment) {
$oldStore = Mage::getDesign()->getStore();
$oldArea = Mage::getDesign()->getArea();
Mage::getDesign()->setStore($order->getStoreId());
Mage::getDesign()->setArea('frontend');
}

$order->save();
$order->sendOrderUpdateEmail((bool) $notifyCustomer, $comment);

if ($notifyCustomer && $comment) {
Mage::getDesign()->setStore($oldStore);
Mage::getDesign()->setArea($oldArea);
}
} catch (Mage_Core_Exception $e) {
$this->_critical($e->getMessage(), self::RESOURCE_INTERNAL_ERROR);
} catch (Throwable $t) {
Mage::logException($t);
$this->_critical($t->getMessage(), self::RESOURCE_UNKNOWN_ERROR);
}

return $this->_getLocation($historyItem);
}

/**
* Retrieve order comment by id
*
* @return array
*/
protected function _retrieve()
{
$comment = Mage::getModel('sales/order_status_history')->load(
$this->getRequest()->getParam(self::PARAM_COMMENT_ID)
);

if (!$comment->getId()) {
$this->_critical(self::RESOURCE_NOT_FOUND);
}

return $comment->getData();
}
}
5 changes: 5 additions & 0 deletions app/code/core/Mage/Sales/etc/api2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -308,6 +308,7 @@
<title>Order Comments</title>
<privileges>
<admin>
<create>1</create>
<retrieve>1</retrieve>
</admin>
<customer>
Expand All @@ -328,6 +329,10 @@
</customer>
</force_attributes>
<routes>
<route_entity>
<route>/orders/comments/:comment_id</route>
<action_type>entity</action_type>
</route_entity>
<route_collection>
<route>/orders/:id/comments</route>
<action_type>collection</action_type>
Expand Down

0 comments on commit 1837f74

Please sign in to comment.