OperationRepository.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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\AsynchronousOperations\Model;
  8. use Magento\Framework\EntityManager\EntityManager;
  9. use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface;
  10. use Magento\AsynchronousOperations\Api\Data\OperationSearchResultsInterfaceFactory as SearchResultFactory;
  11. use Magento\AsynchronousOperations\Api\Data\OperationExtensionInterfaceFactory;
  12. use Magento\AsynchronousOperations\Model\ResourceModel\Operation\CollectionFactory;
  13. use Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface;
  14. use Magento\Framework\Exception\InputException;
  15. use Magento\Framework\Exception\NoSuchEntityException;
  16. /**
  17. * Repository class for @see \Magento\AsynchronousOperations\Api\OperationRepositoryInterface
  18. */
  19. class OperationRepository implements \Magento\AsynchronousOperations\Api\OperationRepositoryInterface
  20. {
  21. /**
  22. * @var EntityManager
  23. */
  24. private $entityManager;
  25. /**
  26. * @var CollectionFactory
  27. */
  28. private $collectionFactory;
  29. /**
  30. * @var SearchResultFactory
  31. */
  32. private $searchResultFactory;
  33. /**
  34. * @var JoinProcessorInterface
  35. */
  36. private $joinProcessor;
  37. /**
  38. * @var \Magento\AsynchronousOperations\Api\Data\OperationExtensionInterfaceFactory
  39. */
  40. private $operationExtensionFactory;
  41. /**
  42. * @var CollectionProcessorInterface
  43. */
  44. private $collectionProcessor;
  45. /**
  46. * @var \Psr\Log\LoggerInterface
  47. */
  48. private $logger;
  49. /**
  50. * OperationRepository constructor.
  51. *
  52. * @param EntityManager $entityManager
  53. * @param CollectionFactory $collectionFactory
  54. * @param SearchResultFactory $searchResultFactory
  55. * @param JoinProcessorInterface $joinProcessor
  56. * @param OperationExtensionInterfaceFactory $operationExtension
  57. * @param CollectionProcessorInterface $collectionProcessor
  58. * @param \Psr\Log\LoggerInterface $logger
  59. */
  60. public function __construct(
  61. EntityManager $entityManager,
  62. CollectionFactory $collectionFactory,
  63. SearchResultFactory $searchResultFactory,
  64. JoinProcessorInterface $joinProcessor,
  65. OperationExtensionInterfaceFactory $operationExtension,
  66. CollectionProcessorInterface $collectionProcessor,
  67. \Psr\Log\LoggerInterface $logger
  68. ) {
  69. $this->entityManager = $entityManager;
  70. $this->collectionFactory = $collectionFactory;
  71. $this->searchResultFactory = $searchResultFactory;
  72. $this->joinProcessor = $joinProcessor;
  73. $this->operationExtensionFactory = $operationExtension;
  74. $this->collectionProcessor = $collectionProcessor;
  75. $this->logger = $logger;
  76. $this->collectionProcessor = $collectionProcessor;
  77. }
  78. /**
  79. * @inheritDoc
  80. */
  81. public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
  82. {
  83. /** @var \Magento\AsynchronousOperations\Api\Data\OperationSearchResultsInterface $searchResult */
  84. $searchResult = $this->searchResultFactory->create();
  85. /** @var \Magento\AsynchronousOperations\Model\ResourceModel\Operation\Collection $collection */
  86. $collection = $this->collectionFactory->create();
  87. $this->joinProcessor->process($collection, \Magento\AsynchronousOperations\Api\Data\OperationInterface::class);
  88. $this->collectionProcessor->process($searchCriteria, $collection);
  89. $searchResult->setSearchCriteria($searchCriteria);
  90. $searchResult->setTotalCount($collection->getSize());
  91. $searchResult->setItems($collection->getItems());
  92. return $searchResult;
  93. }
  94. }