<?php declare(strict_types=1);
namespace Okeonline\KejeDeliveryAddress;
use Shopware\Core\Checkout\Customer\Aggregate\CustomerAddress\CustomerAddressEntity;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
use Shopware\Core\Framework\Plugin;
use Shopware\Core\Framework\Plugin\Context\ActivateContext;
use Shopware\Core\Framework\Uuid\Uuid;
class OkeonlineKejeDeliveryAddress extends Plugin
{
public function activate(ActivateContext $activateContext): void
{
parent::activate($activateContext);
$this->setupCustomerAddressSourceRelation($activateContext);
}
private function setupCustomerAddressSourceRelation(ActivateContext $activateContext): void
{
/** @var EntityRepository $customerAddressRepository */
$customerAddressRepository = $this->container->get('customer_address.repository');
/** @var EntityRepository $customerAddressSourceRepository */
$customerAddressSourceRepository = $this->container->get('oo_customer_address_source.repository');
$critera = new Criteria();
$critera->addFilter(new EqualsFilter('customerAddressSource.source', null));
$customerAddressResult = $customerAddressRepository->search($critera, $activateContext->getContext());
if($customerAddressResult->count() > 0)
{
$sources = [];
foreach ($customerAddressResult->getEntities() as $entity) {
/** @var CustomerAddressEntity $entity */
$sources[] = [
'id' => Uuid::randomHex(),
'customerAddressId' => $entity->getId(),
'source' => 'default'
];
}
$customerAddressSourceRepository->create($sources, $activateContext->getContext());
}
}
}