123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- <?php
- /**
- * Customer address entity resource model
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Customer\Model\ResourceModel;
- use Magento\Customer\Controller\Adminhtml\Group\Delete;
- use Magento\Customer\Model\CustomerRegistry;
- use Magento\Customer\Model\ResourceModel\Address\DeleteRelation;
- use Magento\Framework\App\ObjectManager;
- /**
- * Class Address
- *
- * @package Magento\Customer\Model\ResourceModel
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class Address extends \Magento\Eav\Model\Entity\VersionControl\AbstractEntity
- {
- /**
- * @var \Magento\Framework\Validator\Factory
- */
- protected $_validatorFactory;
- /**
- * @var \Magento\Customer\Api\CustomerRepositoryInterface
- */
- protected $customerRepository;
- /**
- * @param \Magento\Eav\Model\Entity\Context $context
- * @param \Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot $entitySnapshot
- * @param \Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite $entityRelationComposite
- * @param \Magento\Framework\Validator\Factory $validatorFactory
- * @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository
- * @param array $data
- */
- public function __construct(
- \Magento\Eav\Model\Entity\Context $context,
- \Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot $entitySnapshot,
- \Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite $entityRelationComposite,
- \Magento\Framework\Validator\Factory $validatorFactory,
- \Magento\Customer\Api\CustomerRepositoryInterface $customerRepository,
- $data = []
- ) {
- $this->customerRepository = $customerRepository;
- $this->_validatorFactory = $validatorFactory;
- parent::__construct($context, $entitySnapshot, $entityRelationComposite, $data);
- }
- /**
- * Resource initialization.
- *
- * @return void
- */
- protected function _construct()
- {
- $this->connectionName = 'customer';
- }
- /**
- * Getter and lazy loader for _type
- *
- * @throws \Magento\Framework\Exception\LocalizedException
- * @return \Magento\Eav\Model\Entity\Type
- */
- public function getEntityType()
- {
- if (empty($this->_type)) {
- $this->setType('customer_address');
- }
- return parent::getEntityType();
- }
- /**
- * Check customer address before saving
- *
- * @param \Magento\Framework\DataObject $address
- * @return $this
- */
- protected function _beforeSave(\Magento\Framework\DataObject $address)
- {
- parent::_beforeSave($address);
- $this->_validate($address);
- return $this;
- }
- /**
- * Validate customer address entity
- *
- * @param \Magento\Framework\DataObject $address
- * @return void
- * @throws \Magento\Framework\Validator\Exception When validation failed
- */
- protected function _validate($address)
- {
- if ($address->getDataByKey('should_ignore_validation')) {
- return;
- };
- $validator = $this->_validatorFactory->createValidator('customer_address', 'save');
- if (!$validator->isValid($address)) {
- throw new \Magento\Framework\Validator\Exception(
- null,
- null,
- $validator->getMessages()
- );
- }
- }
- /**
- * @inheritdoc
- */
- public function delete($object)
- {
- $result = parent::delete($object);
- $object->setData([]);
- return $result;
- }
- /**
- * Get instance of DeleteRelation class
- *
- * @deprecated 101.0.0
- * @return DeleteRelation
- */
- private function getDeleteRelation()
- {
- return ObjectManager::getInstance()->get(DeleteRelation::class);
- }
- /**
- * Get instance of CustomerRegistry class
- *
- * @deprecated 101.0.0
- * @return CustomerRegistry
- */
- private function getCustomerRegistry()
- {
- return ObjectManager::getInstance()->get(CustomerRegistry::class);
- }
- /**
- * After delete entity process
- *
- * @param \Magento\Customer\Model\Address $address
- * @return $this
- */
- protected function _afterDelete(\Magento\Framework\DataObject $address)
- {
- $customer = $this->getCustomerRegistry()->retrieve($address->getCustomerId());
- $this->getDeleteRelation()->deleteRelation($address, $customer);
- return parent::_afterDelete($address);
- }
- }
|