Skip to content

Commit

Permalink
Merge pull request #5621 from magento-tsg/2.3-develop-pr122
Browse files Browse the repository at this point in the history
[TSG] Fixes for 2.3 (pr122) (2.3-develop)
  • Loading branch information
zakdma authored Apr 28, 2020
2 parents 8a5efae + 6d9902a commit 9e611f1
Show file tree
Hide file tree
Showing 11 changed files with 361 additions and 133 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,17 @@

namespace Magento\AsynchronousOperations\Model;

use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\EntityManager\EntityManager;
use Magento\AsynchronousOperations\Api\BulkStatusInterface;
use Magento\AsynchronousOperations\Api\Data\BulkOperationsStatusInterface;
use Magento\AsynchronousOperations\Api\Data\BulkOperationsStatusInterfaceFactory as BulkStatusShortFactory;
use Magento\AsynchronousOperations\Api\Data\DetailedBulkOperationsStatusInterface;
use Magento\AsynchronousOperations\Api\Data\DetailedBulkOperationsStatusInterfaceFactory as BulkStatusDetailedFactory;
use Magento\AsynchronousOperations\Api\Data\OperationDetailsInterfaceFactory;
use Magento\AsynchronousOperations\Api\BulkStatusInterface;
use Magento\AsynchronousOperations\Model\ResourceModel\Operation\CollectionFactory;
use Magento\AsynchronousOperations\Model\ResourceModel\Operation\CollectionFactory as OperationCollectionFactory;
use Magento\Framework\EntityManager\EntityManager;
use Magento\Framework\Exception\NoSuchEntityException;

/**
* Class BulkStatus
* Process bulk operations status.
*/
class BulkOperationsStatus implements BulkStatusInterface
{
Expand All @@ -42,28 +43,26 @@ class BulkOperationsStatus implements BulkStatusInterface
private $bulkStatus;

/**
* @var CollectionFactory
* @var OperationCollectionFactory
*/
private $operationCollectionFactory;

/**
* Init dependencies.
*
* @param BulkStatus $bulkStatus
* @param CollectionFactory $operationCollection
* @param OperationCollectionFactory $operationCollection
* @param BulkStatusDetailedFactory $bulkDetailedFactory
* @param BulkStatusShortFactory $bulkShortFactory
* @param \Magento\Framework\EntityManager\EntityManager $entityManager
* @param EntityManager $entityManager
*/
public function __construct(
BulkStatus $bulkStatus,
CollectionFactory $operationCollection,
OperationCollectionFactory $operationCollection,
BulkStatusDetailedFactory $bulkDetailedFactory,
BulkStatusShortFactory $bulkShortFactory,
EntityManager $entityManager
) {
$this->operationCollectionFactory = $operationCollection;
$this->bulkStatus = $bulkStatus;
$this->operationCollectionFactory = $operationCollection;
$this->bulkDetailedFactory = $bulkDetailedFactory;
$this->bulkShortFactory = $bulkShortFactory;
$this->entityManager = $entityManager;
Expand All @@ -82,7 +81,10 @@ public function getFailedOperationsByBulkId($bulkUuid, $failureType = null)
*/
public function getOperationsCountByBulkIdAndStatus($bulkUuid, $status)
{
return $this->bulkStatus->getOperationsCountByBulkIdAndStatus($bulkUuid, $status);
return $this->operationCollectionFactory->create()
->addFieldToFilter('bulk_uuid', $bulkUuid)
->addFieldToFilter('status', $status)
->getSize();
}

/**
Expand All @@ -108,7 +110,7 @@ public function getBulkDetailedStatus($bulkUuid)
{
$bulkSummary = $this->bulkDetailedFactory->create();

/** @var \Magento\AsynchronousOperations\Api\Data\DetailedBulkOperationsStatusInterface $bulk */
/** @var DetailedBulkOperationsStatusInterface $bulk */
$bulk = $this->entityManager->load($bulkSummary, $bulkUuid);

if ($bulk->getBulkId() === null) {
Expand All @@ -119,7 +121,9 @@ public function getBulkDetailedStatus($bulkUuid)
)
);
}
$operations = $this->operationCollectionFactory->create()->addFieldToFilter('bulk_uuid', $bulkUuid)->getItems();
$operations = $this->operationCollectionFactory->create()
->addFieldToFilter('bulk_uuid', $bulkUuid)
->getItems();
$bulk->setOperationsList($operations);

return $bulk;
Expand All @@ -132,7 +136,7 @@ public function getBulkShortStatus($bulkUuid)
{
$bulkSummary = $this->bulkShortFactory->create();

/** @var \Magento\AsynchronousOperations\Api\Data\BulkOperationsStatusInterface $bulk */
/** @var BulkOperationsStatusInterface $bulk */
$bulk = $this->entityManager->load($bulkSummary, $bulkUuid);
if ($bulk->getBulkId() === null) {
throw new NoSuchEntityException(
Expand All @@ -142,7 +146,9 @@ public function getBulkShortStatus($bulkUuid)
)
);
}
$operations = $this->operationCollectionFactory->create()->addFieldToFilter('bulk_uuid', $bulkUuid)->getItems();
$operations = $this->operationCollectionFactory->create()
->addFieldToFilter('bulk_uuid', $bulkUuid)
->getItems();
$bulk->setOperationsList($operations);

return $bulk;
Expand Down
42 changes: 29 additions & 13 deletions app/code/Magento/AsynchronousOperations/Model/BulkStatus.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,28 @@

namespace Magento\AsynchronousOperations\Model;

use Magento\AsynchronousOperations\Api\Data\OperationInterface;
use Magento\AsynchronousOperations\Api\Data\BulkSummaryInterface;
use Magento\Framework\App\ResourceConnection;
use Magento\AsynchronousOperations\Api\Data\BulkSummaryInterfaceFactory;
use Magento\AsynchronousOperations\Api\Data\OperationInterface;
use Magento\AsynchronousOperations\Api\Data\OperationInterfaceFactory;
use Magento\AsynchronousOperations\Model\BulkStatus\CalculatedStatusSql;
use Magento\AsynchronousOperations\Model\ResourceModel\Operation\Collection as OperationCollection;
use Magento\Framework\App\ResourceConnection;
use Magento\Framework\Bulk\BulkStatusInterface;
use Magento\Framework\EntityManager\MetadataPool;

/**
* Class BulkStatus
* Process bulk operations status.
*/
class BulkStatus implements \Magento\Framework\Bulk\BulkStatusInterface
class BulkStatus implements BulkStatusInterface
{
/**
* @var \Magento\AsynchronousOperations\Api\Data\BulkSummaryInterfaceFactory
* @var BulkSummaryInterfaceFactory
*/
private $bulkCollectionFactory;

/**
* @var \Magento\AsynchronousOperations\Api\Data\OperationInterfaceFactory
* @var OperationInterfaceFactory
*/
private $operationCollectionFactory;

Expand All @@ -43,22 +47,21 @@ class BulkStatus implements \Magento\Framework\Bulk\BulkStatusInterface
private $metadataPool;

/**
* BulkStatus constructor.
* @param ResourceModel\Bulk\CollectionFactory $bulkCollection
* @param ResourceModel\Operation\CollectionFactory $operationCollection
* @param ResourceConnection $resourceConnection
* @param CalculatedStatusSql $calculatedStatusSql
* @param MetadataPool $metadataPool
*/
public function __construct(
\Magento\AsynchronousOperations\Model\ResourceModel\Bulk\CollectionFactory $bulkCollection,
\Magento\AsynchronousOperations\Model\ResourceModel\Operation\CollectionFactory $operationCollection,
ResourceModel\Bulk\CollectionFactory $bulkCollection,
ResourceModel\Operation\CollectionFactory $operationCollection,
ResourceConnection $resourceConnection,
CalculatedStatusSql $calculatedStatusSql,
MetadataPool $metadataPool
) {
$this->operationCollectionFactory = $operationCollection;
$this->bulkCollectionFactory = $bulkCollection;
$this->operationCollectionFactory = $operationCollection;
$this->resourceConnection = $resourceConnection;
$this->calculatedStatusSql = $calculatedStatusSql;
$this->metadataPool = $metadataPool;
Expand Down Expand Up @@ -87,9 +90,22 @@ public function getFailedOperationsByBulkId($bulkUuid, $failureType = null)
*/
public function getOperationsCountByBulkIdAndStatus($bulkUuid, $status)
{
/** @var \Magento\AsynchronousOperations\Model\ResourceModel\Operation\Collection $collection */
$collection = $this->operationCollectionFactory->create();
return $collection->addFieldToFilter('bulk_uuid', $bulkUuid)
/** @var OperationCollection $operationCollection */
$operationCollection = $this->operationCollectionFactory->create();
if ($status === OperationInterface::STATUS_TYPE_OPEN) {
$allProcessedOperationsQty = $operationCollection
->addFieldToFilter('bulk_uuid', $bulkUuid)
->getSize();

if (empty($allProcessedOperationsQty)) {
return $this->getOperationCount($bulkUuid);
}

$operationCollection->clear();
}

return $operationCollection
->addFieldToFilter('bulk_uuid', $bulkUuid)
->addFieldToFilter('status', $status)
->getSize();
}
Expand Down
Loading

0 comments on commit 9e611f1

Please sign in to comment.