23 private $bulkCollectionFactory;
28 private $operationCollectionFactory;
33 private $resourceConnection;
38 private $calculatedStatusSql;
43 private $metadataPool;
60 $this->operationCollectionFactory = $operationCollection;
61 $this->bulkCollectionFactory = $bulkCollection;
63 $this->calculatedStatusSql = $calculatedStatusSql;
64 $this->metadataPool = $metadataPool;
72 $failureCodes = $failureType
78 $operations = $this->operationCollectionFactory->create()
79 ->addFieldToFilter(
'bulk_uuid', $bulkUuid)
80 ->addFieldToFilter(
'status', $failureCodes)
94 $allOperationsQty = $this->getOperationCount($bulkUuid);
99 $allProcessedOperationsQty = (int)$this->operationCollectionFactory->create()
100 ->addFieldToFilter(
'bulk_uuid', $bulkUuid)
103 return $allOperationsQty - $allProcessedOperationsQty;
107 $collection = $this->operationCollectionFactory->create();
108 return $collection->addFieldToFilter(
'bulk_uuid', $bulkUuid)
109 ->addFieldToFilter(
'status',
$status)
119 $collection = $this->bulkCollectionFactory->create();
120 $operationTableName = $this->resourceConnection->getTableName(
'magento_operation');
129 $select->columns([
'status' => $this->calculatedStatusSql->get($operationTableName)])
130 ->order(
new \
Zend_Db_Expr(
'FIELD(status, ' . implode(
',', $statusesArray) .
')'));
132 ->addOrder(
'start_time');
145 $allProcessedOperationsQty = (int)$this->operationCollectionFactory->create()
146 ->addFieldToFilter(
'bulk_uuid', $bulkUuid)
149 if ($allProcessedOperationsQty == 0) {
156 $allOperationsQty = $this->getOperationCount($bulkUuid);
161 $allOpenOperationsQty = $allOperationsQty - $allProcessedOperationsQty;
166 $allCompleteOperationsQty = $this->operationCollectionFactory->create()
167 ->addFieldToFilter(
'bulk_uuid', $bulkUuid)->addFieldToFilter(
172 if ($allCompleteOperationsQty == $allOperationsQty) {
176 if ($allOpenOperationsQty > 0 && $allOpenOperationsQty !== $allOperationsQty) {
189 private function getOperationCount($bulkUuid)
191 $metadata = $this->metadataPool->getMetadata(BulkSummaryInterface::class);
192 $connection = $this->resourceConnection->getConnectionByName($metadata->getEntityConnectionName());
196 ->from($metadata->getEntityTable(),
'operation_count')
197 ->where(
'uuid = ?', $bulkUuid)
getFailedOperationsByBulkId($bulkUuid, $failureType=null)
__construct(\Magento\AsynchronousOperations\Model\ResourceModel\Bulk\CollectionFactory $bulkCollection, \Magento\AsynchronousOperations\Model\ResourceModel\Operation\CollectionFactory $operationCollection, ResourceConnection $resourceConnection, CalculatedStatusSql $calculatedStatusSql, MetadataPool $metadataPool)
const STATUS_TYPE_NOT_RETRIABLY_FAILED
const STATUS_TYPE_RETRIABLY_FAILED
const FINISHED_WITH_FAILURE
const FINISHED_SUCCESSFULLY
const STATUS_TYPE_COMPLETE
getOperationsCountByBulkIdAndStatus($bulkUuid, $status)