regionResourceModel = $regionResourceModel; $this->nexusDataObjectFactory = $nexusDataObjectFactory; $this->nexusRepository = $nexusRepository; $this->logger = $logger; $this->filterGroupBuilder = $filterGroupBuilder; $this->filterBuilder = $filterBuilder; $this->searchCriteriaBuilder = $searchCriteriaBuilder; } public static function getDependencies() { return []; } public function getAliases() { return []; } /** * @param string $country * @param int $regionId * @return \Magento\Framework\Api\Search\SearchCriteria */ protected function searchCriteriaBuilder(string $country, int $regionId) { return $this->searchCriteriaBuilder ->addFilter($this->filterBuilder->setField('country_id')->setValue($country)->create()) ->addFilter($this->filterBuilder->setField('region_id')->setValue($regionId)->create()) ->addSortOrder('id', 'asc') ->create(); } /** * @throws LocalizedException */ public function apply(): void { $connection = $this->regionResourceModel->getConnection(); $select = $connection->select() ->from($this->regionResourceModel->getMainTable())->where('country_id = ?', 'US'); foreach ($connection->fetchAll($select) as $region) { /* @var $result \Magento\Framework\Api\SearchResults */ $result = $this->nexusRepository->getList($this->searchCriteriaBuilder($region['country_id'], (int)$region['region_id'])); if ($result->getTotalCount()){ continue; } $nexus = $this->nexusDataObjectFactory->create(); $nexus->setRegionCode($region['code']) ->setRegionId($region['region_id']) ->setCountryId($region['country_id']) ->setRegion($region['default_name']); try { $id = $this->nexusRepository->save($nexus); // echo $id."\r\n\r\n"; } catch (LocalizedException $e) { $this->logger->debug($e->getMessage()); } } } }