OrderStatus.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\ResourceModel\Order\Rss;
  7. use Magento\Framework\App\ResourceConnection;
  8. /**
  9. * Order Rss Resource Model
  10. *
  11. * @author Magento Core Team <core@magentocommerce.com>
  12. */
  13. class OrderStatus
  14. {
  15. /**
  16. * @var Resource
  17. */
  18. protected $_resource;
  19. /**
  20. * @param ResourceConnection $resource
  21. */
  22. public function __construct(ResourceConnection $resource)
  23. {
  24. $this->_resource = $resource;
  25. }
  26. /**
  27. * Retrieve order comments
  28. *
  29. * @param int $orderId
  30. * @return array
  31. */
  32. public function getAllCommentCollection($orderId)
  33. {
  34. /** @var $resource \Magento\Framework\App\ResourceConnection */
  35. $resource = $this->_resource;
  36. $read = $resource->getConnection();
  37. $fields = ['notified' => 'is_customer_notified', 'comment', 'created_at'];
  38. $commentSelects = [];
  39. foreach (['invoice', 'shipment', 'creditmemo'] as $entityTypeCode) {
  40. $mainTable = $resource->getTableName('sales_' . $entityTypeCode);
  41. $slaveTable = $resource->getTableName('sales_' . $entityTypeCode . '_comment');
  42. $select = $read->select()->from(
  43. ['main' => $mainTable],
  44. ['entity_id' => 'order_id', 'entity_type_code' => new \Zend_Db_Expr("'{$entityTypeCode}'")]
  45. )->join(
  46. ['slave' => $slaveTable],
  47. 'main.entity_id = slave.parent_id',
  48. $fields
  49. )->where(
  50. 'main.order_id = ?',
  51. $orderId
  52. );
  53. $commentSelects[] = '(' . $select . ')';
  54. }
  55. $select = $read->select()->from(
  56. $resource->getTableName('sales_order_status_history'),
  57. ['entity_id' => 'parent_id', 'entity_type_code' => new \Zend_Db_Expr("'order'")] + $fields
  58. )->where(
  59. 'parent_id = ?',
  60. $orderId
  61. )->where(
  62. 'is_visible_on_front > 0'
  63. );
  64. $commentSelects[] = '(' . $select . ')';
  65. $commentSelect = $read->select()->union($commentSelects, \Magento\Framework\DB\Select::SQL_UNION_ALL);
  66. $select = $read->select()->from(
  67. ['orders' => $resource->getTableName('sales_order')],
  68. ['increment_id']
  69. )->join(
  70. ['t' => $commentSelect],
  71. 't.entity_id = orders.entity_id'
  72. )->order(
  73. 'orders.created_at desc'
  74. );
  75. return $read->fetchAll($select);
  76. }
  77. }