| Current Path : /home/rtorresani/www/vendor/magento/module-customer/Model/ResourceModel/Customer/ |
| Current File : //home/rtorresani/www/vendor/magento/module-customer/Model/ResourceModel/Customer/Relation.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Customer\Model\ResourceModel\Customer;
/**
* Class Relation
*/
class Relation implements \Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationInterface
{
/**
* Save relations for Customer
*
* @param \Magento\Framework\Model\AbstractModel $customer
* @return void
* @SuppressWarnings(PHPMD.CyclomaticComplexity)
*/
public function processRelation(\Magento\Framework\Model\AbstractModel $customer)
{
$defaultBillingId = $customer->getData('default_billing');
$defaultShippingId = $customer->getData('default_shipping');
if (!$customer->getData('ignore_validation_flag')) {
/** @var \Magento\Customer\Model\Address $address */
foreach ($customer->getAddresses() as $address) {
if ($address->getData('_deleted')) {
if ($address->getId() == $defaultBillingId) {
$customer->setData('default_billing', null);
}
if ($address->getId() == $defaultShippingId) {
$customer->setData('default_shipping', null);
}
$removedAddressId = $address->getId();
$address->delete();
// Remove deleted address from customer address collection
$customer->getAddressesCollection()->removeItemByKey($removedAddressId);
} else {
$address->setParentId(
$customer->getId()
)->setStoreId(
$customer->getStoreId()
)->setIsCustomerSaveTransaction(
true
)->save();
if (($address->getIsPrimaryBilling() ||
$address->getIsDefaultBilling()) && $address->getId() != $defaultBillingId
) {
$customer->setData('default_billing', $address->getId());
}
if (($address->getIsPrimaryShipping() ||
$address->getIsDefaultShipping()) && $address->getId() != $defaultShippingId
) {
$customer->setData('default_shipping', $address->getId());
}
}
}
}
$changedAddresses = [];
$changedAddresses['default_billing'] = $customer->getData('default_billing');
$changedAddresses['default_shipping'] = $customer->getData('default_shipping');
$customer->getResource()->getConnection()->update(
$customer->getResource()->getTable('customer_entity'),
$changedAddresses,
$customer->getResource()->getConnection()->quoteInto('entity_id = ?', $customer->getId())
);
}
}