<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Customer\Model\ResourceModel\Group\Grid; use Magento\Framework\Data\Collection\EntityFactory; use Magento\Customer\Api\Data\GroupInterface; use Magento\Customer\Api\GroupRepositoryInterface; use Magento\Framework\Api\AbstractServiceCollection; use Magento\Framework\Api\FilterBuilder; use Magento\Framework\Api\SearchCriteriaBuilder; use Magento\Framework\Api\SimpleDataObjectConverter; use Magento\Framework\Api\SortOrderBuilder; /** * Customer group collection backed by services */ class ServiceCollection extends AbstractServiceCollection { /** * @var GroupRepositoryInterface */ protected $groupRepository; /** * @var SimpleDataObjectConverter */ protected $simpleDataObjectConverter; /** * @param EntityFactory $entityFactory * @param FilterBuilder $filterBuilder * @param SearchCriteriaBuilder $searchCriteriaBuilder * @param SortOrderBuilder $sortOrderBuilder * @param GroupRepositoryInterface $groupRepository * @param SimpleDataObjectConverter $simpleDataObjectConverter */ public function __construct( EntityFactory $entityFactory, FilterBuilder $filterBuilder, SearchCriteriaBuilder $searchCriteriaBuilder, SortOrderBuilder $sortOrderBuilder, GroupRepositoryInterface $groupRepository, SimpleDataObjectConverter $simpleDataObjectConverter ) { parent::__construct($entityFactory, $filterBuilder, $searchCriteriaBuilder, $sortOrderBuilder); $this->groupRepository = $groupRepository; $this->simpleDataObjectConverter = $simpleDataObjectConverter; } /** * Load customer group collection data from service * * @param bool $printQuery * @param bool $logQuery * @return $this * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function loadData($printQuery = false, $logQuery = false) { if (!$this->isLoaded()) { $searchCriteria = $this->getSearchCriteria(); $searchResults = $this->groupRepository->getList($searchCriteria); $this->_totalRecords = $searchResults->getTotalCount(); /** @var GroupInterface[] $groups */ $groups = $searchResults->getItems(); foreach ($groups as $group) { $groupItem = new \Magento\Framework\DataObject(); $groupItem->addData( $this->simpleDataObjectConverter->toFlatArray( $group, \Magento\Customer\Api\Data\GroupInterface::class ) ); $this->_addItem($groupItem); } $this->_setIsLoaded(); } return $this; } }