Collection.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\Inventory\Model\ResourceModel\Source;
  8. use Magento\Framework\Data\Collection\Db\FetchStrategyInterface;
  9. use Magento\Framework\Data\Collection\EntityFactoryInterface;
  10. use Magento\Framework\DB\Adapter\AdapterInterface;
  11. use Magento\Framework\Event\ManagerInterface;
  12. use Magento\Framework\Model\ResourceModel\Db\AbstractDb;
  13. use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
  14. use Magento\Inventory\Model\ResourceModel\Source as SourceResourceModel;
  15. use Magento\Inventory\Model\Source as SourceModel;
  16. use Magento\InventoryApi\Model\SourceCarrierLinkManagementInterface;
  17. use Magento\InventoryApi\Api\Data\SourceInterface;
  18. use Psr\Log\LoggerInterface;
  19. /**
  20. * Resource Collection of Source entities
  21. *
  22. * @api
  23. */
  24. class Collection extends AbstractCollection
  25. {
  26. /**
  27. * @var SourceCarrierLinkManagementInterface
  28. */
  29. private $sourceCarrierLinkManagement;
  30. /**
  31. * @param EntityFactoryInterface $entityFactory
  32. * @param LoggerInterface $logger
  33. * @param FetchStrategyInterface $fetchStrategy
  34. * @param ManagerInterface $eventManager
  35. * @param SourceCarrierLinkManagementInterface $sourceCarrierLinkManagement
  36. * @param AdapterInterface $connection
  37. * @param AbstractDb $resource
  38. */
  39. public function __construct(
  40. EntityFactoryInterface $entityFactory,
  41. LoggerInterface $logger,
  42. FetchStrategyInterface $fetchStrategy,
  43. ManagerInterface $eventManager,
  44. SourceCarrierLinkManagementInterface $sourceCarrierLinkManagement,
  45. AdapterInterface $connection = null,
  46. AbstractDb $resource = null
  47. ) {
  48. parent::__construct(
  49. $entityFactory,
  50. $logger,
  51. $fetchStrategy,
  52. $eventManager,
  53. $connection,
  54. $resource
  55. );
  56. $this->sourceCarrierLinkManagement = $sourceCarrierLinkManagement;
  57. }
  58. /**
  59. * @inheritdoc
  60. */
  61. protected function _construct()
  62. {
  63. $this->_init(SourceModel::class, SourceResourceModel::class);
  64. }
  65. /**
  66. * @inheritdoc
  67. */
  68. public function load($printQuery = false, $logQuery = false)
  69. {
  70. parent::load($printQuery, $logQuery);
  71. foreach ($this->_items as $item) {
  72. /** @var SourceInterface $item */
  73. $this->sourceCarrierLinkManagement->loadCarrierLinksBySource($item);
  74. }
  75. return $this;
  76. }
  77. }