Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
BulkNotificationManagement.php
Go to the documentation of this file.
1 <?php
7 
11 use Magento\AsynchronousOperations\Model\ResourceModel\Bulk\CollectionFactory as BulkCollectionFactory;
13 
18 {
22  private $metadataPool;
23 
27  private $resourceConnection;
28 
32  private $logger;
33 
37  private $bulkCollectionFactory;
38 
47  public function __construct(
48  MetadataPool $metadataPool,
49  ResourceConnection $resourceConnection,
50  BulkCollectionFactory $bulkCollectionFactory,
51  \Psr\Log\LoggerInterface $logger
52  ) {
53  $this->metadataPool = $metadataPool;
54  $this->resourceConnection = $resourceConnection;
55  $this->bulkCollectionFactory = $bulkCollectionFactory;
56  $this->logger = $logger;
57  }
58 
66  public function acknowledgeBulks(array $bulkUuids)
67  {
68  $metadata = $this->metadataPool->getMetadata(BulkSummaryInterface::class);
69  $connection = $this->resourceConnection->getConnectionByName($metadata->getEntityConnectionName());
70 
71  try {
72  $connection->insertArray(
73  $this->resourceConnection->getTableName('magento_acknowledged_bulk'),
74  ['bulk_uuid'],
75  $bulkUuids
76  );
77  } catch (\Exception $exception) {
78  $this->logger->critical($exception->getMessage());
79  return false;
80  }
81  return true;
82  }
83 
91  public function ignoreBulks(array $bulkUuids)
92  {
93  $metadata = $this->metadataPool->getMetadata(BulkSummaryInterface::class);
94  $connection = $this->resourceConnection->getConnectionByName($metadata->getEntityConnectionName());
95 
96  try {
97  $connection->delete(
98  $this->resourceConnection->getTableName('magento_acknowledged_bulk'),
99  ['bulk_uuid IN(?)' => $bulkUuids]
100  );
101  } catch (\Exception $exception) {
102  $this->logger->critical($exception->getMessage());
103  return false;
104  }
105  return true;
106  }
107 
114  public function getAcknowledgedBulksByUser($userId)
115  {
116  $bulks = $this->bulkCollectionFactory->create()
117  ->join(
118  ['acknowledged_bulk' => $this->resourceConnection->getTableName('magento_acknowledged_bulk')],
119  'main_table.uuid = acknowledged_bulk.bulk_uuid',
120  []
121  )->addFieldToFilter('user_id', $userId)
122  ->addOrder('start_time', Collection::SORT_ORDER_DESC)
123  ->getItems();
124 
125  return $bulks;
126  }
127 
134  public function getIgnoredBulksByUser($userId)
135  {
137  $bulkCollection = $this->bulkCollectionFactory->create();
138  $bulkCollection->getSelect()->joinLeft(
139  ['acknowledged_bulk' => $this->resourceConnection->getTableName('magento_acknowledged_bulk')],
140  'main_table.uuid = acknowledged_bulk.bulk_uuid',
141  ['acknowledged_bulk.bulk_uuid']
142  );
143  $bulks = $bulkCollection->addFieldToFilter('user_id', $userId)
144  ->addFieldToFilter('acknowledged_bulk.bulk_uuid', ['null' => true])
145  ->addOrder('start_time', Collection::SORT_ORDER_DESC)
146  ->getItems();
147 
148  return $bulks;
149  }
150 }
$bulks
Definition: bulk.php:17
$logger
__construct(MetadataPool $metadataPool, ResourceConnection $resourceConnection, BulkCollectionFactory $bulkCollectionFactory, \Psr\Log\LoggerInterface $logger)
$connection
Definition: bulk.php:13