Skip to content

Commit

Permalink
Merge pull request magento#202 from magento-engcom/install-data-code-…
Browse files Browse the repository at this point in the history
…quality

@SuppressWarnings removing
  • Loading branch information
Valeriy Nayda authored Nov 23, 2017
2 parents 7cf460f + 513e64d commit 91795d5
Show file tree
Hide file tree
Showing 5 changed files with 299 additions and 142 deletions.
171 changes: 29 additions & 142 deletions app/code/Magento/InventoryCatalog/Setup/InstallData.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,109 +3,59 @@
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);

namespace Magento\InventoryCatalog\Setup;

use Magento\Framework\Indexer\IndexerInterface;
use Magento\Framework\Indexer\IndexerInterfaceFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Inventory\Indexer\Stock\StockIndexer;
use Magento\InventoryApi\Api\Data\SourceInterfaceFactory;
use Magento\InventoryApi\Api\Data\SourceInterface;
use Magento\InventoryApi\Api\SourceRepositoryInterface;
use Magento\InventoryApi\Api\Data\StockInterfaceFactory;
use Magento\InventoryApi\Api\Data\StockInterface;
use Magento\InventoryApi\Api\StockRepositoryInterface;
use Magento\InventoryApi\Api\AssignSourcesToStockInterface;
use Magento\Framework\Api\DataObjectHelper;
use Magento\InventoryCatalog\Api\DefaultSourceProviderInterface;
use Magento\InventoryCatalog\Api\DefaultStockProviderInterface;
use Magento\InventoryCatalog\Setup\Operation\AssignSourceToStock;
use Magento\InventoryCatalog\Setup\Operation\CreateDefaultSource;
use Magento\InventoryCatalog\Setup\Operation\CreateDefaultStock;
use Magento\InventoryCatalog\Setup\Operation\ReindexDefaultStock;

/**
* Install Default Source, Stock and link them together
*
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
*/
class InstallData implements InstallDataInterface
{
/**
* @var SourceRepositoryInterface
* @var CreateDefaultSource
*/
private $sourceRepository;
private $createDefaultSource;

/**
* @var SourceInterfaceFactory
* @var CreateDefaultStock
*/
private $sourceFactory;
private $createDefaultStock;

/**
* @var StockRepositoryInterface
* @var AssignSourceToStock
*/
private $stockRepository;
private $assignSourceToStock;

/**
* @var StockInterfaceFactory
* @var ReindexDefaultStock
*/
private $stockFactory;
private $reindexDefaultStock;

/**
* @var DataObjectHelper
*/
private $dataObjectHelper;

/**
* @var AssignSourcesToStockInterface
*/
private $assignSourcesToStock;

/**
* @var IndexerInterfaceFactory
*/
private $indexerFactory;

/**
* @var DefaultSourceProviderInterface
*/
private $defaultSourceProvider;

/**
* @var DefaultStockProviderInterface
*/
private $defaultStockProvider;

/**
* @param SourceRepositoryInterface $sourceRepository
* @param SourceInterfaceFactory $sourceFactory
* @param StockRepositoryInterface $stockRepository
* @param StockInterfaceFactory $stockFactory
* @param AssignSourcesToStockInterface $assignSourcesToStock
* @param DataObjectHelper $dataObjectHelper
* @param IndexerInterfaceFactory $indexerFactory
* @param DefaultSourceProviderInterface $defaultSourceProvider
* @param DefaultStockProviderInterface $defaultStockProvider
* @param CreateDefaultSource $createDefaultSource
* @param CreateDefaultStock $createDefaultStock
* @param AssignSourceToStock $assignSourceToStock
* @param ReindexDefaultStock $reindexDefaultStock
*/
public function __construct(
SourceRepositoryInterface $sourceRepository,
SourceInterfaceFactory $sourceFactory,
StockRepositoryInterface $stockRepository,
StockInterfaceFactory $stockFactory,
AssignSourcesToStockInterface $assignSourcesToStock,
DataObjectHelper $dataObjectHelper,
IndexerInterfaceFactory $indexerFactory,
DefaultSourceProviderInterface $defaultSourceProvider,
DefaultStockProviderInterface $defaultStockProvider
CreateDefaultSource $createDefaultSource,
CreateDefaultStock $createDefaultStock,
AssignSourceToStock $assignSourceToStock,
ReindexDefaultStock $reindexDefaultStock
) {
$this->sourceRepository = $sourceRepository;
$this->sourceFactory = $sourceFactory;
$this->stockRepository = $stockRepository;
$this->stockFactory = $stockFactory;
$this->assignSourcesToStock = $assignSourcesToStock;
$this->dataObjectHelper = $dataObjectHelper;
$this->indexerFactory = $indexerFactory;
$this->defaultSourceProvider = $defaultSourceProvider;
$this->defaultStockProvider = $defaultStockProvider;
$this->createDefaultSource = $createDefaultSource;
$this->createDefaultStock = $createDefaultStock;
$this->assignSourceToStock = $assignSourceToStock;
$this->reindexDefaultStock = $reindexDefaultStock;
}

/**
Expand All @@ -114,72 +64,9 @@ public function __construct(
*/
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$this->addDefaultSource();
$this->addDefaultStock();
$this->assignSourceToStock();
$this->reindexDefaultStock();
}

/**
* Add default source
*
* @return void
*/
private function addDefaultSource()
{
$data = [
SourceInterface::SOURCE_ID => $this->defaultSourceProvider->getId(),
SourceInterface::NAME => 'Default Source',
SourceInterface::ENABLED => 1,
SourceInterface::DESCRIPTION => 'Default Source',
SourceInterface::LATITUDE => 0,
SourceInterface::LONGITUDE => 0,
SourceInterface::PRIORITY => 0,
SourceInterface::COUNTRY_ID => 'US',
SourceInterface::POSTCODE => '00000'
];
$source = $this->sourceFactory->create();
$this->dataObjectHelper->populateWithArray($source, $data, SourceInterface::class);
$this->sourceRepository->save($source);
}

/**
* Add default stock
*
* @return void
*/
private function addDefaultStock()
{
$data = [
StockInterface::STOCK_ID => $this->defaultStockProvider->getId(),
StockInterface::NAME => 'Default Stock'
];
$source = $this->stockFactory->create();
$this->dataObjectHelper->populateWithArray($source, $data, StockInterface::class);
$this->stockRepository->save($source);
}

/**
* Assign default stock to default source
*
* @return void
*/
private function assignSourceToStock()
{
$this->assignSourcesToStock->execute(
[$this->defaultSourceProvider->getId()],
$this->defaultStockProvider->getId()
);
}

/**
* @return void
*/
private function reindexDefaultStock()
{
/** @var IndexerInterface $indexer */
$indexer = $this->indexerFactory->create();
$indexer->load(StockIndexer::INDEXER_ID);
$indexer->reindexRow($this->defaultStockProvider->getId());
$this->createDefaultSource->execute();
$this->createDefaultStock->execute();
$this->assignSourceToStock->execute();
$this->reindexDefaultStock->execute();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);

namespace Magento\InventoryCatalog\Setup\Operation;

use Magento\InventoryCatalog\Api\DefaultSourceProviderInterface;
use Magento\InventoryCatalog\Api\DefaultStockProviderInterface;
use Magento\InventoryApi\Api\AssignSourcesToStockInterface;

/**
* Assign default source to stock processor
*/
class AssignSourceToStock
{
/**
* @var DefaultStockProviderInterface
*/
private $defaultStockProvider;

/**
* @var DefaultSourceProviderInterface
*/
private $defaultSourceProvider;

/**
* @var AssignSourcesToStockInterface
*/
private $assignSourcesToStock;

/**
* @param DefaultStockProviderInterface $defaultStockProvider
* @param DefaultSourceProviderInterface $defaultSourceProvider
* @param AssignSourcesToStockInterface $assignSourcesToStock
*/
public function __construct(
DefaultStockProviderInterface $defaultStockProvider,
DefaultSourceProviderInterface $defaultSourceProvider,
AssignSourcesToStockInterface $assignSourcesToStock
) {
$this->defaultStockProvider = $defaultStockProvider;
$this->defaultSourceProvider = $defaultSourceProvider;
$this->assignSourcesToStock = $assignSourcesToStock;
}

/**
* Assign default source to stock
*
* @return void
*/
public function execute()
{
$this->assignSourcesToStock->execute(
[$this->defaultSourceProvider->getId()],
$this->defaultStockProvider->getId()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);

namespace Magento\InventoryCatalog\Setup\Operation;

use Magento\InventoryApi\Api\Data\SourceInterface;
use Magento\InventoryCatalog\Model\DefaultSourceProvider;
use Magento\InventoryApi\Api\Data\SourceInterfaceFactory;
use Magento\Framework\Api\DataObjectHelper;
use Magento\InventoryApi\Api\SourceRepositoryInterface;

/**
* Create default source during installation
*/
class CreateDefaultSource
{
/**
* @var DefaultSourceProvider
*/
private $defaultSourceProvider;

/**
* @var SourceInterfaceFactory
*/
private $sourceFactory;

/**
* @var DataObjectHelper
*/
private $dataObjectHelper;

/**
* @var SourceRepositoryInterface
*/
private $sourceRepository;

/**
* @param DefaultSourceProvider $defaultSourceProvider
* @param SourceInterfaceFactory $sourceFactory
* @param DataObjectHelper $dataObjectHelper
* @param SourceRepositoryInterface $sourceRepository
*/
public function __construct(
DefaultSourceProvider $defaultSourceProvider,
SourceInterfaceFactory $sourceFactory,
DataObjectHelper $dataObjectHelper,
SourceRepositoryInterface $sourceRepository
) {
$this->defaultSourceProvider = $defaultSourceProvider;
$this->sourceFactory = $sourceFactory;
$this->dataObjectHelper = $dataObjectHelper;
$this->sourceRepository = $sourceRepository;
}

/**
* Create default source
*
* @return void
*/
public function execute()
{
$data = [
SourceInterface::SOURCE_ID => $this->defaultSourceProvider->getId(),
SourceInterface::NAME => 'Default Source',
SourceInterface::ENABLED => 1,
SourceInterface::DESCRIPTION => 'Default Source',
SourceInterface::LATITUDE => 0,
SourceInterface::LONGITUDE => 0,
SourceInterface::PRIORITY => 0,
SourceInterface::COUNTRY_ID => 'US',
SourceInterface::POSTCODE => '00000'
];
$source = $this->sourceFactory->create();
$this->dataObjectHelper->populateWithArray($source, $data, SourceInterface::class);
$this->sourceRepository->save($source);
}
}
Loading

0 comments on commit 91795d5

Please sign in to comment.