BulkOperationsStatus.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\AsynchronousOperations\Model;
  8. use Magento\Framework\Exception\NoSuchEntityException;
  9. use Magento\Framework\EntityManager\EntityManager;
  10. use Magento\AsynchronousOperations\Api\Data\BulkOperationsStatusInterfaceFactory as BulkStatusShortFactory;
  11. use Magento\AsynchronousOperations\Api\Data\DetailedBulkOperationsStatusInterfaceFactory as BulkStatusDetailedFactory;
  12. use Magento\AsynchronousOperations\Api\Data\OperationDetailsInterfaceFactory;
  13. use Magento\AsynchronousOperations\Api\BulkStatusInterface;
  14. use Magento\AsynchronousOperations\Model\ResourceModel\Operation\CollectionFactory;
  15. /**
  16. * Class BulkStatus
  17. */
  18. class BulkOperationsStatus implements BulkStatusInterface
  19. {
  20. /**
  21. * @var EntityManager
  22. */
  23. private $entityManager;
  24. /**
  25. * @var BulkStatusDetailedFactory
  26. */
  27. private $bulkDetailedFactory;
  28. /**
  29. * @var BulkStatusShortFactory
  30. */
  31. private $bulkShortFactory;
  32. /**
  33. * @var BulkStatus
  34. */
  35. private $bulkStatus;
  36. /**
  37. * @var CollectionFactory
  38. */
  39. private $operationCollectionFactory;
  40. /**
  41. * Init dependencies.
  42. *
  43. * @param BulkStatus $bulkStatus
  44. * @param CollectionFactory $operationCollection
  45. * @param BulkStatusDetailedFactory $bulkDetailedFactory
  46. * @param BulkStatusShortFactory $bulkShortFactory
  47. * @param \Magento\Framework\EntityManager\EntityManager $entityManager
  48. */
  49. public function __construct(
  50. BulkStatus $bulkStatus,
  51. CollectionFactory $operationCollection,
  52. BulkStatusDetailedFactory $bulkDetailedFactory,
  53. BulkStatusShortFactory $bulkShortFactory,
  54. EntityManager $entityManager
  55. ) {
  56. $this->operationCollectionFactory = $operationCollection;
  57. $this->bulkStatus = $bulkStatus;
  58. $this->bulkDetailedFactory = $bulkDetailedFactory;
  59. $this->bulkShortFactory = $bulkShortFactory;
  60. $this->entityManager = $entityManager;
  61. }
  62. /**
  63. * @inheritDoc
  64. */
  65. public function getFailedOperationsByBulkId($bulkUuid, $failureType = null)
  66. {
  67. return $this->bulkStatus->getFailedOperationsByBulkId($bulkUuid, $failureType);
  68. }
  69. /**
  70. * @inheritDoc
  71. */
  72. public function getOperationsCountByBulkIdAndStatus($bulkUuid, $status)
  73. {
  74. return $this->bulkStatus->getOperationsCountByBulkIdAndStatus($bulkUuid, $status);
  75. }
  76. /**
  77. * @inheritDoc
  78. */
  79. public function getBulksByUser($userId)
  80. {
  81. return $this->bulkStatus->getBulksByUser($userId);
  82. }
  83. /**
  84. * @inheritDoc
  85. */
  86. public function getBulkStatus($bulkUuid)
  87. {
  88. return $this->bulkStatus->getBulkStatus($bulkUuid);
  89. }
  90. /**
  91. * @inheritDoc
  92. */
  93. public function getBulkDetailedStatus($bulkUuid)
  94. {
  95. $bulkSummary = $this->bulkDetailedFactory->create();
  96. /** @var \Magento\AsynchronousOperations\Api\Data\DetailedBulkOperationsStatusInterface $bulk */
  97. $bulk = $this->entityManager->load($bulkSummary, $bulkUuid);
  98. if ($bulk->getBulkId() === null) {
  99. throw new NoSuchEntityException(
  100. __(
  101. 'Bulk uuid %bulkUuid not exist',
  102. ['bulkUuid' => $bulkUuid]
  103. )
  104. );
  105. }
  106. $operations = $this->operationCollectionFactory->create()->addFieldToFilter('bulk_uuid', $bulkUuid)->getItems();
  107. $bulk->setOperationsList($operations);
  108. return $bulk;
  109. }
  110. /**
  111. * @inheritDoc
  112. */
  113. public function getBulkShortStatus($bulkUuid)
  114. {
  115. $bulkSummary = $this->bulkShortFactory->create();
  116. /** @var \Magento\AsynchronousOperations\Api\Data\BulkOperationsStatusInterface $bulk */
  117. $bulk = $this->entityManager->load($bulkSummary, $bulkUuid);
  118. if ($bulk->getBulkId() === null) {
  119. throw new NoSuchEntityException(
  120. __(
  121. 'Bulk uuid %bulkUuid not exist',
  122. ['bulkUuid' => $bulkUuid]
  123. )
  124. );
  125. }
  126. $operations = $this->operationCollectionFactory->create()->addFieldToFilter('bulk_uuid', $bulkUuid)->getItems();
  127. $bulk->setOperationsList($operations);
  128. return $bulk;
  129. }
  130. }