vendor/sylius/sylius/src/Sylius/Bundle/CoreBundle/EventListener/CustomerDefaultAddressListener.php line 23

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Sylius package.
  4.  *
  5.  * (c) Paweł Jędrzejewski
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. declare(strict_types=1);
  11. namespace Sylius\Bundle\CoreBundle\EventListener;
  12. use Sylius\Bundle\ResourceBundle\Event\ResourceControllerEvent;
  13. use Sylius\Component\Core\Model\AddressInterface;
  14. use Sylius\Component\Core\Model\Customer;
  15. use Webmozart\Assert\Assert;
  16. final class CustomerDefaultAddressListener
  17. {
  18.     public function preCreate(ResourceControllerEvent $event): void
  19.     {
  20.         $address $event->getSubject();
  21.         /** @var AddressInterface $address */
  22.         Assert::isInstanceOf($addressAddressInterface::class);
  23.         $this->setAddressAsDefault($address);
  24.     }
  25.     private function setAddressAsDefault(AddressInterface $address): void
  26.     {
  27.         if (null !== $address->getId()) {
  28.             return;
  29.         }
  30.         /** @var Customer|null $customer */
  31.         $customer $address->getCustomer();
  32.         if (null !== $customer && null === $customer->getDefaultAddress()) {
  33.             $customer->setDefaultAddress($address);
  34.         }
  35.     }
  36. }