Example #1
0
 /**
  * Updates an Address Model based on information from an Address Data Object.
  *
  * @param AddressModel $addressModel
  * @param Address $address
  * @return void
  */
 public function updateAddressModel(AddressModel $addressModel, Address $address)
 {
     // Set all attributes
     $attributes = AddressConverter::toFlatArray($address);
     foreach ($attributes as $attributeCode => $attributeData) {
         if (Address::KEY_REGION === $attributeCode && $address->getRegion() instanceof Region) {
             $addressModel->setDataUsingMethod(Region::KEY_REGION, $address->getRegion()->getRegion());
             $addressModel->setDataUsingMethod(Region::KEY_REGION_CODE, $address->getRegion()->getRegionCode());
             $addressModel->setDataUsingMethod(Region::KEY_REGION_ID, $address->getRegion()->getRegionId());
         } else {
             $addressModel->setDataUsingMethod($attributeCode, $attributeData);
         }
     }
     // Set customer related data
     $isBilling = $address->isDefaultBilling();
     $addressModel->setIsDefaultBilling($isBilling);
     $addressModel->setIsDefaultShipping($address->isDefaultShipping());
     // Need to use attribute set or future updates can cause data loss
     if (!$addressModel->getAttributeSetId()) {
         $addressModel->setAttributeSetId(CustomerMetadataServiceInterface::ATTRIBUTE_SET_ID_ADDRESS);
     }
 }