elementTypeRepository = $elementTypeRepository; $this->elementCollect = $elementCollect; } public function getElements(int $projectId): array { $elements = $this->elementTypeRepository->getElementsByProject($projectId); $view = []; if ($elements) { $elementsPIM = []; foreach ($elements as $element) { if (!empty($element->getElementsPIM())) { foreach ($element->getElementsPIM() as $pim) { $elementsPIM[] = $pim; } } } $elementsPIMs = $this->elementCollect->readMultiple($elementsPIM); foreach ($elementsPIMs as $elementsPIM) { $view[$elementsPIM['element_type_id']]['type'] = [ 'id'=>$elementsPIM['element_type_id'], 'name' => $elementsPIM['element_type_name'], ]; $view[$elementsPIM['element_type_id']]['elements'][] = new ElementView( $elementsPIM['id'], $elementsPIM['name'] ); } } return array_values($view); } }