Exemple #1
0
 /**
  * {@inheritdoc}
  */
 public function denormalize($data, $class, $format = null, array $context = [])
 {
     if (empty($data)) {
         return false;
     }
     /** @var Region $resultObject */
     $resultObject = new $class();
     if (isset($data['region_id'])) {
         $resultObject->setRegionId($data['region_id']);
     }
     if (isset($data['code'])) {
         $code = $data['code'];
         $resultObject->setCode($code);
         // Some magento region codes are already combined
         $countryCode = $data['countryCode'];
         if (strpos($code, $countryCode . BAPRegion::SEPARATOR) === 0) {
             $combinedCode = $code;
         } else {
             $combinedCode = BAPRegion::getRegionCombinedCode($countryCode, $code);
         }
         $resultObject->setCombinedCode($combinedCode);
         $resultObject->setCountryCode($countryCode);
     }
     // magento can bring empty name, region will be skipped in strategy
     if (isset($data['name'])) {
         $resultObject->setName($data['name']);
     }
     return $resultObject;
 }
Exemple #2
0
 /**
  * @param array $regionData
  *
  * @return null|Region
  */
 protected function getRegion(array $regionData)
 {
     if (strpos($regionData['code'], $regionData['country_id'] . BAPRegion::SEPARATOR) === 0) {
         $combinedCode = $regionData['code'];
     } else {
         $combinedCode = BAPRegion::getRegionCombinedCode($regionData['country_id'], $regionData['code']);
     }
     /** @var $region Region */
     $region = $this->regionRepository->findOneBy(array('combinedCode' => $combinedCode));
     if (!$region) {
         $region = new Region($combinedCode);
         $region->setCode($regionData['code'])->setRegionId($regionData['region_id'])->setCombinedCode($combinedCode)->setCountryCode($regionData['country_id']);
     }
     $region->setName($regionData['default_name']);
     return $region;
 }
Exemple #3
0
 /**
  * @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;
 }
Exemple #4
0
 public function testGetRegionCombinedCode()
 {
     $this->assertEquals('US-CA', Region::getRegionCombinedCode('US', 'CA'));
 }