Skip to content

Commit

Permalink
Backport: #2315 (#2746)
Browse files Browse the repository at this point in the history
* Added order comment functionality to REST API (#2315)

* CS Fixes

* Updated phpstan-baseline.neon

Co-authored-by: Mohamed ELIDRISSI <67818913+elidrissidev@users.noreply.github.com>
  • Loading branch information
sreichel and elidrissidev authored Nov 24, 2022
1 parent 861b564 commit bab8874
Show file tree
Hide file tree
Showing 4 changed files with 79 additions and 0 deletions.
10 changes: 10 additions & 0 deletions .github/phpstan-baseline.neon
Original file line number Diff line number Diff line change
Expand Up @@ -5050,6 +5050,16 @@ parameters:
count: 1
path: ../app/code/core/Mage/Sales/Block/Recurring/Profiles.php

-
message: "#^Variable \\$oldArea might not be defined\\.$#"
count: 1
path: ../app/code/core/Mage/Sales/Model/Api2/Order/Comment/Rest/Admin/V1.php

-
message: "#^Variable \\$oldStore might not be defined\\.$#"
count: 1
path: ../app/code/core/Mage/Sales/Model/Api2/Order/Comment/Rest/Admin/V1.php

-
message: "#^Call to an undefined method Varien_Simplexml_Element\\:\\:getClassName\\(\\)\\.$#"
count: 1
Expand Down
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 @@ -32,6 +32,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)
*/
public const PARAM_ORDER_ID = 'id';
public const PARAM_COMMENT_ID = 'comment_id';
/**#@-*/

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,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 @@ -303,6 +303,7 @@
<title>Order Comments</title>
<privileges>
<admin>
<create>1</create>
<retrieve>1</retrieve>
</admin>
<customer>
Expand All @@ -323,6 +324,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 bab8874

Please sign in to comment.