collectionFactory = $collectionFactory; $this->request = $request; $this->jsonResponse = $jsonResponse; $this->regionCollectionFactory = $regionCollectionFactory; $this->resultJsonFactory = $resultJsonFactory; } protected function getParentCode($type, $parentCode) { if ($type==='city') { $parentCode = $this->regionCollectionFactory->create() ->addFieldToFilter('main_table.region_id', $parentCode) ->getFirstItem() ->getData('code'); } return $parentCode; } public function execute() { $resultJson = $this->resultJsonFactory->create(); $type = strtolower($this->request->getParam('type')); $parentCode = $this->request->getParam('administrativeId'); $parentCode = $this->getParentCode($type, $parentCode); if (!in_array($type, self::TYPE)) { $this->jsonResponse->setErrors(true)->setMessages([__('Invalid type')]); return $resultJson->setData($this->jsonResponse); } $collection = $this->collectionFactory->create($type) ->addFieldToFilter('parent_code', $parentCode) ->addFieldToSelect(['name']) ->load(); $this->jsonResponse->setErrors(false)->setData([ 'administrative' => $collection->getData() ]) ->setData(['parentCode' => $parentCode]); return $resultJson->setData($this->jsonResponse); } }