objectManager = $objectManager; $this->searchCriteriaBuilder = $searchCriteriaBuilder; $this->service = $service; } /** * {@inheritdoc} */ public function getData(array $fieldsData) { $service = $this->getService(); $searchCriteria = $this->searchCriteriaBuilder->create(); /** @var SearchResults $list */ $list = $service->getList($searchCriteria); return $this->getRequestedFields($list, $fieldsData); } /** * @param SearchResults $list * @param array $fields * @return array * @throws NotFoundException */ private function getRequestedFields(SearchResults $list, array $fields) { $requestedData = []; foreach ($list->getItems() as $key => $item) { foreach (array_keys($fields) as $fieldName) { if (!isset($item[$fieldName])) { throw new NotFoundException(__("Field '%1' not found", $fieldName)); } $requestedData[$key][$fieldName] = $item[$fieldName]; } } return $requestedData; } /** * @return mixed */ private function getService() { return $this->objectManager->get($this->service); } }