<?php namespace NicolasBejean\Customer\Observer; use Magento\Customer\Api\AccountManagementInterface; use Magento\Customer\Api\Data\CustomerInterface; use Magento\Framework\Event\Observer; use Magento\Framework\Event\ObserverInterface; use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Exception\NoSuchEntityException; use NicolasBejean\Customer\Helper\SendGeoLocation; use Psr\Log\LoggerInterface; /** * Class SendCustomerData * * @category PHP * @package NicolasBejean\Customer\Observer * @author Nicolas Béjean <nicolas@bejean.eu> * @license https://lab.frogg.it/bejean-developpement/magento-2/modules/customer/-/blob/master/LICENCE GPL3 Licence * @link https://www.bejean.eu */ class SendCustomerData implements ObserverInterface { /** * @var AccountManagementInterface */ private AccountManagementInterface $accountManagement; /** * @var LoggerInterface */ private LoggerInterface $logger; /** * @var SendGeoLocation */ private SendGeoLocation $helper; /** * SendCustomerData constructor. * * @param AccountManagementInterface $accountManagement * @param LoggerInterface $logger * @param SendGeoLocation $helper */ public function __construct( AccountManagementInterface $accountManagement, LoggerInterface $logger, SendGeoLocation $helper ) { $this->accountManagement = $accountManagement; $this->logger = $logger; $this->helper = $helper; } /** * Execute method * * @param Observer $observer */ public function execute(Observer $observer) { $event = $observer->getEvent(); if ($event->getName() === 'customer_register_success') { /** @var CustomerInterface $customer */ $customer = $observer->getData('customer'); try { $defaultBillingAddress = $this->accountManagement->getDefaultBillingAddress($customer->getId()); } catch (NoSuchEntityException | LocalizedException $e) { $this->logger->error(__('An error has occurred while retrieving the default billing address.')); exit(); } if (!is_null($defaultBillingAddress)) { $this->helper->sendDataToApi($customer, $defaultBillingAddress); } exit(); } } }