| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- declare(strict_types=1);
 
- namespace Magento\InventoryGroupedProductIndexer\Indexer\Stock;
 
- use Magento\Framework\App\ResourceConnection;
 
- use Magento\Framework\Exception\StateException;
 
- use Magento\InventoryMultiDimensionalIndexerApi\Model\Alias;
 
- use Magento\InventoryMultiDimensionalIndexerApi\Model\IndexHandlerInterface;
 
- use Magento\InventoryMultiDimensionalIndexerApi\Model\IndexNameBuilder;
 
- use Magento\InventoryMultiDimensionalIndexerApi\Model\IndexStructureInterface;
 
- use Magento\InventoryMultiDimensionalIndexerApi\Model\IndexTableSwitcherInterface;
 
- use Magento\InventoryCatalogApi\Api\DefaultStockProviderInterface;
 
- use Magento\InventoryIndexer\Indexer\InventoryIndexer;
 
- use Magento\InventoryIndexer\Indexer\Stock\GetAllStockIds;
 
- class StockIndexer
 
- {
 
-     /**
 
-      * @var GetAllStockIds
 
-      */
 
-     private $getAllStockIds;
 
-     /**
 
-      * @var IndexStructureInterface
 
-      */
 
-     private $indexStructure;
 
-     /**
 
-      * @var IndexHandlerInterface
 
-      */
 
-     private $indexHandler;
 
-     /**
 
-      * @var IndexNameBuilder
 
-      */
 
-     private $indexNameBuilder;
 
-     /**
 
-      * @var IndexDataByStockIdProvider
 
-      */
 
-     private $indexDataByStockIdProvider;
 
-     /**
 
-      * @var IndexTableSwitcherInterface
 
-      */
 
-     private $indexTableSwitcher;
 
-     /**
 
-      * @var DefaultStockProviderInterface
 
-      */
 
-     private $defaultStockProvider;
 
-     /**
 
-      * $indexStructure is reserved name for construct variable in index internal mechanism
 
-      *
 
-      * @param GetAllStockIds $getAllStockIds
 
-      * @param IndexStructureInterface $indexStructure
 
-      * @param IndexHandlerInterface $indexHandler
 
-      * @param IndexNameBuilder $indexNameBuilder
 
-      * @param IndexDataByStockIdProvider $indexDataByStockIdProvider
 
-      * @param IndexTableSwitcherInterface $indexTableSwitcher
 
-      * @param DefaultStockProviderInterface $defaultStockProvider
 
-      */
 
-     public function __construct(
 
-         GetAllStockIds $getAllStockIds,
 
-         IndexStructureInterface $indexStructure,
 
-         IndexHandlerInterface $indexHandler,
 
-         IndexNameBuilder $indexNameBuilder,
 
-         IndexDataByStockIdProvider $indexDataByStockIdProvider,
 
-         IndexTableSwitcherInterface $indexTableSwitcher,
 
-         DefaultStockProviderInterface $defaultStockProvider
 
-     ) {
 
-         $this->getAllStockIds = $getAllStockIds;
 
-         $this->indexStructure = $indexStructure;
 
-         $this->indexHandler = $indexHandler;
 
-         $this->indexNameBuilder = $indexNameBuilder;
 
-         $this->indexDataByStockIdProvider = $indexDataByStockIdProvider;
 
-         $this->indexTableSwitcher = $indexTableSwitcher;
 
-         $this->defaultStockProvider = $defaultStockProvider;
 
-     }
 
-     /**
 
-      * @return void
 
-      * @throws StateException
 
-      */
 
-     public function executeFull()
 
-     {
 
-         $stockIds = $this->getAllStockIds->execute();
 
-         $this->executeList($stockIds);
 
-     }
 
-     /**
 
-      * @param int $stockId
 
-      * @return void
 
-      * @throws StateException
 
-      */
 
-     public function executeRow(int $stockId)
 
-     {
 
-         $this->executeList([$stockId]);
 
-     }
 
-     /**
 
-      * @param array $stockIds
 
-      * @return void
 
-      * @throws StateException
 
-      */
 
-     public function executeList(array $stockIds)
 
-     {
 
-         foreach ($stockIds as $stockId) {
 
-             if ($this->defaultStockProvider->getId() === $stockId) {
 
-                 continue;
 
-             }
 
-             $mainIndexName = $this->indexNameBuilder
 
-                 ->setIndexId(InventoryIndexer::INDEXER_ID)
 
-                 ->addDimension('stock_', (string)$stockId)
 
-                 ->setAlias(Alias::ALIAS_MAIN)
 
-                 ->build();
 
-             if (!$this->indexStructure->isExist($mainIndexName, ResourceConnection::DEFAULT_CONNECTION)) {
 
-                 $this->indexStructure->create($mainIndexName, ResourceConnection::DEFAULT_CONNECTION);
 
-             }
 
-             $indexData = $this->indexDataByStockIdProvider->execute((int)$stockId);
 
-             $this->indexHandler->cleanIndex(
 
-                 $mainIndexName,
 
-                 $indexData,
 
-                 ResourceConnection::DEFAULT_CONNECTION
 
-             );
 
-             $this->indexHandler->saveIndex(
 
-                 $mainIndexName,
 
-                 $indexData,
 
-                 ResourceConnection::DEFAULT_CONNECTION
 
-             );
 
-         }
 
-     }
 
- }
 
 
  |