/** * @param string $combinedCode * @param string $countryCode * @param string $code * * @return BAPRegion */ public function loadRegionByCode($combinedCode, $countryCode, $code) { $regionClass = 'Oro\\Bundle\\AddressBundle\\Entity\\Region'; $countryClass = 'Oro\\Bundle\\AddressBundle\\Entity\\Country'; // Simply search region by combinedCode $region = $this->doctrineHelper->getEntityByCriteria(['combinedCode' => $combinedCode], $regionClass); if (!$region) { // Some region codes in magento are filled by region names $em = $this->doctrineHelper->getEntityManager($countryClass); $country = $em->getReference($countryClass, $countryCode); $region = $this->doctrineHelper->getEntityByCriteria(['country' => $country, 'name' => $combinedCode], $regionClass); } if (!$region) { // Some numeric regions codes may be padded by 0 in ISO format and not padded in magento // As example FR-1 in magento and FR-01 in ISO $region = $this->doctrineHelper->getEntityByCriteria(['combinedCode' => BAPRegion::getRegionCombinedCode($countryCode, str_pad($code, 2, '0', STR_PAD_LEFT))], $regionClass); } return $region; }
/** * @param array $criteria * @param object|string $entity object to get class from or class name * * @return object */ protected function getEntityByCriteria(array $criteria, $entity) { return $this->doctrineHelper->getEntityByCriteria($criteria, $entity); }