Order.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <?php
  2. namespace Dotdigitalgroup\Email\Model;
  3. class Order extends \Magento\Framework\Model\AbstractModel
  4. {
  5. const EMAIL_ORDER_NOT_IMPORTED = null;
  6. /**
  7. * @var \Magento\Sales\Api\Data\OrderSearchResultInterfaceFactory
  8. */
  9. private $salesCollection;
  10. /**
  11. * Constructor.
  12. *
  13. * @return null
  14. */
  15. public function _construct()
  16. {
  17. parent::_construct();
  18. $this->_init(\Dotdigitalgroup\Email\Model\ResourceModel\Order::class);
  19. }
  20. /**
  21. * Order constructor.
  22. *
  23. * @param \Magento\Framework\Model\Context $context
  24. * @param \Magento\Framework\Registry $registry
  25. * @param \Magento\Sales\Api\Data\OrderSearchResultInterfaceFactory $salesCollection
  26. * @param array $data
  27. * @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
  28. * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
  29. */
  30. public function __construct(
  31. \Magento\Framework\Model\Context $context,
  32. \Magento\Framework\Registry $registry,
  33. \Magento\Sales\Api\Data\OrderSearchResultInterfaceFactory $salesCollection,
  34. array $data = [],
  35. \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
  36. \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null
  37. ) {
  38. $this->salesCollection = $salesCollection;
  39. parent::__construct(
  40. $context,
  41. $registry,
  42. $resource,
  43. $resourceCollection,
  44. $data
  45. );
  46. }
  47. /**
  48. * Load the email order by quote id.
  49. *
  50. * @param int $orderId
  51. * @param int $quoteId
  52. *
  53. * @return $this|\Magento\Framework\DataObject
  54. */
  55. public function loadByOrderId($orderId, $quoteId)
  56. {
  57. $item = $this->getCollection()
  58. ->loadByOrderIdAndQuoteId($orderId, $quoteId);
  59. if ($item) {
  60. return $item;
  61. } else {
  62. return $this->setOrderId($orderId)
  63. ->setQuoteId($quoteId);
  64. }
  65. }
  66. /**
  67. * Get connector order.
  68. *
  69. * @param int $orderId
  70. * @param int $quoteId
  71. * @param int $storeId
  72. *
  73. * @return $this|\Magento\Framework\DataObject
  74. */
  75. public function getEmailOrderRow($orderId, $quoteId, $storeId)
  76. {
  77. $item = $this->getCollection()
  78. ->getEmailOrderRow($orderId, $quoteId, $storeId);
  79. if ($item) {
  80. return $item;
  81. } else {
  82. return $this->setOrderId($orderId)
  83. ->setQuoteId($quoteId)
  84. ->setStoreId($storeId)
  85. ->setCreatedAt(time());
  86. }
  87. }
  88. /**
  89. * Get pending orders for import.
  90. *
  91. * @param array $storeIds
  92. * @param int $limit
  93. * @param array $orderStatuses
  94. *
  95. * @return \Dotdigitalgroup\Email\Model\ResourceModel\Order\Collection|\Magento\Framework\DataObject
  96. */
  97. public function getOrdersToImport($storeIds, $limit, $orderStatuses)
  98. {
  99. return $this->getCollection()
  100. ->getOrdersToImport($storeIds, $limit, $orderStatuses);
  101. }
  102. /**
  103. * Get pending modified orders to import.
  104. *
  105. * @param array $storeIds
  106. * @param int $limit
  107. * @param array $orderStatuses
  108. *
  109. * @return \Dotdigitalgroup\Email\Model\ResourceModel\Order\Collection
  110. */
  111. public function getModifiedOrdersToImport($storeIds, $limit, $orderStatuses)
  112. {
  113. return $this->getCollection()
  114. ->getModifiedOrdersToImport($storeIds, $limit, $orderStatuses);
  115. }
  116. /**
  117. * Get all sent orders
  118. *
  119. * @param array $storeIds
  120. * @param int $limit
  121. *
  122. * @return \Dotdigitalgroup\Email\Model\ResourceModel\Order\Collection
  123. */
  124. public function getAllSentOrders($storeIds, $limit)
  125. {
  126. return $this->getCollection()
  127. ->getAllSentOrders($storeIds, $limit);
  128. }
  129. /**
  130. * @param array $orderIds
  131. *
  132. * @return \Magento\Sales\Model\ResourceModel\Order\Collection
  133. */
  134. public function getSalesOrdersWithIds($orderIds)
  135. {
  136. return $this->salesCollection->create()
  137. ->addFieldToFilter('entity_id', ['in' => $orderIds]);
  138. }
  139. }