ServiceCollection.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Model\ResourceModel\Group\Grid;
  7. use Magento\Framework\Data\Collection\EntityFactory;
  8. use Magento\Customer\Api\Data\GroupInterface;
  9. use Magento\Customer\Api\GroupRepositoryInterface;
  10. use Magento\Framework\Api\AbstractServiceCollection;
  11. use Magento\Framework\Api\FilterBuilder;
  12. use Magento\Framework\Api\SearchCriteriaBuilder;
  13. use Magento\Framework\Api\SimpleDataObjectConverter;
  14. use Magento\Framework\Api\SortOrderBuilder;
  15. /**
  16. * Customer group collection backed by services
  17. */
  18. class ServiceCollection extends AbstractServiceCollection
  19. {
  20. /**
  21. * @var GroupRepositoryInterface
  22. */
  23. protected $groupRepository;
  24. /**
  25. * @var SimpleDataObjectConverter
  26. */
  27. protected $simpleDataObjectConverter;
  28. /**
  29. * @param EntityFactory $entityFactory
  30. * @param FilterBuilder $filterBuilder
  31. * @param SearchCriteriaBuilder $searchCriteriaBuilder
  32. * @param SortOrderBuilder $sortOrderBuilder
  33. * @param GroupRepositoryInterface $groupRepository
  34. * @param SimpleDataObjectConverter $simpleDataObjectConverter
  35. */
  36. public function __construct(
  37. EntityFactory $entityFactory,
  38. FilterBuilder $filterBuilder,
  39. SearchCriteriaBuilder $searchCriteriaBuilder,
  40. SortOrderBuilder $sortOrderBuilder,
  41. GroupRepositoryInterface $groupRepository,
  42. SimpleDataObjectConverter $simpleDataObjectConverter
  43. ) {
  44. parent::__construct($entityFactory, $filterBuilder, $searchCriteriaBuilder, $sortOrderBuilder);
  45. $this->groupRepository = $groupRepository;
  46. $this->simpleDataObjectConverter = $simpleDataObjectConverter;
  47. }
  48. /**
  49. * Load customer group collection data from service
  50. *
  51. * @param bool $printQuery
  52. * @param bool $logQuery
  53. * @return $this
  54. * @SuppressWarnings(PHPMD.UnusedFormalParameter)
  55. */
  56. public function loadData($printQuery = false, $logQuery = false)
  57. {
  58. if (!$this->isLoaded()) {
  59. $searchCriteria = $this->getSearchCriteria();
  60. $searchResults = $this->groupRepository->getList($searchCriteria);
  61. $this->_totalRecords = $searchResults->getTotalCount();
  62. /** @var GroupInterface[] $groups */
  63. $groups = $searchResults->getItems();
  64. foreach ($groups as $group) {
  65. $groupItem = new \Magento\Framework\DataObject();
  66. $groupItem->addData(
  67. $this->simpleDataObjectConverter->toFlatArray(
  68. $group,
  69. \Magento\Customer\Api\Data\GroupInterface::class
  70. )
  71. );
  72. $this->_addItem($groupItem);
  73. }
  74. $this->_setIsLoaded();
  75. }
  76. return $this;
  77. }
  78. }