Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
BulkStatus.php
Go to the documentation of this file.
1 <?php
8 
14 
19 {
23  private $bulkCollectionFactory;
24 
28  private $operationCollectionFactory;
29 
33  private $resourceConnection;
34 
38  private $calculatedStatusSql;
39 
43  private $metadataPool;
44 
53  public function __construct(
54  \Magento\AsynchronousOperations\Model\ResourceModel\Bulk\CollectionFactory $bulkCollection,
55  \Magento\AsynchronousOperations\Model\ResourceModel\Operation\CollectionFactory $operationCollection,
56  ResourceConnection $resourceConnection,
57  CalculatedStatusSql $calculatedStatusSql,
58  MetadataPool $metadataPool
59  ) {
60  $this->operationCollectionFactory = $operationCollection;
61  $this->bulkCollectionFactory = $bulkCollection;
62  $this->resourceConnection = $resourceConnection;
63  $this->calculatedStatusSql = $calculatedStatusSql;
64  $this->metadataPool = $metadataPool;
65  }
66 
70  public function getFailedOperationsByBulkId($bulkUuid, $failureType = null)
71  {
72  $failureCodes = $failureType
73  ? [$failureType]
74  : [
77  ];
78  $operations = $this->operationCollectionFactory->create()
79  ->addFieldToFilter('bulk_uuid', $bulkUuid)
80  ->addFieldToFilter('status', $failureCodes)
81  ->getItems();
82  return $operations;
83  }
84 
88  public function getOperationsCountByBulkIdAndStatus($bulkUuid, $status)
89  {
94  $allOperationsQty = $this->getOperationCount($bulkUuid);
95 
99  $allProcessedOperationsQty = (int)$this->operationCollectionFactory->create()
100  ->addFieldToFilter('bulk_uuid', $bulkUuid)
101  ->getSize();
102 
103  return $allOperationsQty - $allProcessedOperationsQty;
104  }
105 
107  $collection = $this->operationCollectionFactory->create();
108  return $collection->addFieldToFilter('bulk_uuid', $bulkUuid)
109  ->addFieldToFilter('status', $status)
110  ->getSize();
111  }
112 
116  public function getBulksByUser($userId)
117  {
119  $collection = $this->bulkCollectionFactory->create();
120  $operationTableName = $this->resourceConnection->getTableName('magento_operation');
121  $statusesArray = [
127  ];
128  $select = $collection->getSelect();
129  $select->columns(['status' => $this->calculatedStatusSql->get($operationTableName)])
130  ->order(new \Zend_Db_Expr('FIELD(status, ' . implode(',', $statusesArray) . ')'));
131  $collection->addFieldToFilter('user_id', $userId)
132  ->addOrder('start_time');
133 
134  return $collection->getItems();
135  }
136 
140  public function getBulkStatus($bulkUuid)
141  {
145  $allProcessedOperationsQty = (int)$this->operationCollectionFactory->create()
146  ->addFieldToFilter('bulk_uuid', $bulkUuid)
147  ->getSize();
148 
149  if ($allProcessedOperationsQty == 0) {
151  }
152 
156  $allOperationsQty = $this->getOperationCount($bulkUuid);
157 
161  $allOpenOperationsQty = $allOperationsQty - $allProcessedOperationsQty;
162 
166  $allCompleteOperationsQty = $this->operationCollectionFactory->create()
167  ->addFieldToFilter('bulk_uuid', $bulkUuid)->addFieldToFilter(
168  'status',
170  )->getSize();
171 
172  if ($allCompleteOperationsQty == $allOperationsQty) {
174  }
175 
176  if ($allOpenOperationsQty > 0 && $allOpenOperationsQty !== $allOperationsQty) {
178  }
179 
181  }
182 
189  private function getOperationCount($bulkUuid)
190  {
191  $metadata = $this->metadataPool->getMetadata(BulkSummaryInterface::class);
192  $connection = $this->resourceConnection->getConnectionByName($metadata->getEntityConnectionName());
193 
194  return (int)$connection->fetchOne(
195  $connection->select()
196  ->from($metadata->getEntityTable(), 'operation_count')
197  ->where('uuid = ?', $bulkUuid)
198  );
199  }
200 }
getFailedOperationsByBulkId($bulkUuid, $failureType=null)
Definition: BulkStatus.php:70
$operations
Definition: bulk.php:55
__construct(\Magento\AsynchronousOperations\Model\ResourceModel\Bulk\CollectionFactory $bulkCollection, \Magento\AsynchronousOperations\Model\ResourceModel\Operation\CollectionFactory $operationCollection, ResourceConnection $resourceConnection, CalculatedStatusSql $calculatedStatusSql, MetadataPool $metadataPool)
Definition: BulkStatus.php:53
$status
Definition: order_status.php:8
$connection
Definition: bulk.php:13
getOperationsCountByBulkIdAndStatus($bulkUuid, $status)