cryopreserveCollectionFactory->create()->addFieldToSelect('sample')->load()->getData(); foreach ($data as $item) { if (!isset($samples[$item['sample']])) { $samples[$item['sample']] = ['sample' => $item['sample']]; } } return array_values($samples); } protected function getTypes() { $sample = trim((string)$this->restRequest->getParam("sample")); $collection = $this->cryopreserveCollectionFactory->create(); if (!empty($sample)) { $collection->addFieldToFilter('sample', $sample); } $data = []; foreach ($collection->getItems() as $item) { /* @var $item \Stemcell\Catalog\Model\Cryopreserve */ if (!isset($data[$item->getType()])) { $data[$item->getType()] = ['type' => $item->getType()]; } } return array_values($data); } protected function getCellTypes() { $sample = trim((string)$this->restRequest->getParam("sample")); $type = trim((string)$this->restRequest->getParam("type")); $collection = $this->cryopreserveCollectionFactory->create(); if (!empty($type)) { $collection->addFieldToFilter('sample', $sample) ->addFieldToFilter('type', $type); } $data = []; foreach ($collection->getItems() as $item) { /* @var $item \Stemcell\Catalog\Model\Cryopreserve */ if (!isset($data[$item->getCellType()])) { $data[$item->getCellType()] = ['cellType' => $item->getCellType()]; } } return array_values($data); } /** * @return array */ public function getFilters() { return ['samples'=>$this->getSamples(), 'types'=>$this->getTypes(), 'cellTypes'=>$this->getCellTypes()]; } /** * @return string */ public function execute() : string { $sample = trim((string)$this->restRequest->getParam("sample")); $type = trim((string)$this->restRequest->getParam("type")); $cellType = trim((string)$this->restRequest->getParam("cellType")); $collection = $this->cryopreserveCollectionFactory->create() ->addFieldToSelect(['reference_density', 'desc', 'reference']); if (!empty($sample)) { $collection->addFieldToFilter('sample', $sample); } if (!empty($type)) { $collection->addFieldToFilter('type', $type); } if (!empty($cellType)) { $collection->addFieldToFilter('cell_type', $cellType); } return json_encode(['filters' => $this->getFilters(), 'items' => $collection->getData()]); } }