1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Controller\Adminhtml\Order;
- use Magento\Framework\App\Action\HttpPostActionInterface;
- use Magento\Sales\Model\Order\Email\Sender\OrderCommentSender;
- /**
- * Class AddComment
- */
- class AddComment extends \Magento\Sales\Controller\Adminhtml\Order implements HttpPostActionInterface
- {
- /**
- * Authorization level of a basic admin session
- *
- * @see _isAllowed()
- */
- const ADMIN_RESOURCE = 'Magento_Sales::comment';
- /**
- * ACL resource needed to send comment email notification
- */
- const ADMIN_SALES_EMAIL_RESOURCE = 'Magento_Sales::emails';
- /**
- * Add order comment action
- *
- * @return \Magento\Framework\Controller\ResultInterface
- */
- public function execute()
- {
- $order = $this->_initOrder();
- if ($order) {
- try {
- $data = $this->getRequest()->getPost('history');
- if (empty($data['comment']) && $data['status'] == $order->getDataByKey('status')) {
- throw new \Magento\Framework\Exception\LocalizedException(
- __('The comment is missing. Enter and try again.')
- );
- }
- $notify = $data['is_customer_notified'] ?? false;
- $visible = $data['is_visible_on_front'] ?? false;
- if ($notify && !$this->_authorization->isAllowed(self::ADMIN_SALES_EMAIL_RESOURCE)) {
- $notify = false;
- }
- $history = $order->addStatusHistoryComment($data['comment'], $data['status']);
- $history->setIsVisibleOnFront($visible);
- $history->setIsCustomerNotified($notify);
- $history->save();
- $comment = trim(strip_tags($data['comment']));
- $order->save();
- /** @var OrderCommentSender $orderCommentSender */
- $orderCommentSender = $this->_objectManager
- ->create(\Magento\Sales\Model\Order\Email\Sender\OrderCommentSender::class);
- $orderCommentSender->send($order, $notify, $comment);
- return $this->resultPageFactory->create();
- } catch (\Magento\Framework\Exception\LocalizedException $e) {
- $response = ['error' => true, 'message' => $e->getMessage()];
- } catch (\Exception $e) {
- $response = ['error' => true, 'message' => __('We cannot add order history.')];
- }
- if (is_array($response)) {
- $resultJson = $this->resultJsonFactory->create();
- $resultJson->setData($response);
- return $resultJson;
- }
- }
- return $this->resultRedirectFactory->create()->setPath('sales/*/');
- }
- }
|