From 52b6135dd4b19370c6e430d035239ab245c5d142 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20B=C3=A9jean?= <nicolas@bejean.eu> Date: Sun, 28 Feb 2021 17:53:36 +0100 Subject: [PATCH] feat: Create Observer --- Observer/SendCustomerDataToElasticsearch.php | 43 +++++++++++++++++++- etc/events.xml | 2 +- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/Observer/SendCustomerDataToElasticsearch.php b/Observer/SendCustomerDataToElasticsearch.php index 778b6fe..0d65fbf 100644 --- a/Observer/SendCustomerDataToElasticsearch.php +++ b/Observer/SendCustomerDataToElasticsearch.php @@ -1,8 +1,13 @@ <?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 Psr\Log\LoggerInterface; /** * Class SendCustomerDataToElasticsearch @@ -15,7 +20,29 @@ use Magento\Framework\Event\ObserverInterface; */ class SendCustomerDataToElasticsearch implements ObserverInterface { - public function __construct() {} + /** + * @var AccountManagementInterface + */ + private AccountManagementInterface $accountManagement; + + /** + * @var LoggerInterface + */ + private LoggerInterface $logger; + + /** + * SendCustomerDataToElasticsearch constructor. + * + * @param AccountManagementInterface $accountManagement + * @param LoggerInterface $logger + */ + public function __construct( + AccountManagementInterface $accountManagement, + LoggerInterface $logger + ) { + $this->accountManagement = $accountManagement; + $this->logger = $logger; + } /** * Execute method @@ -27,7 +54,21 @@ class SendCustomerDataToElasticsearch implements ObserverInterface $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)) { + /* Send data to Elasticsearch */ + } + exit(); } } } diff --git a/etc/events.xml b/etc/events.xml index db75584..8435610 100644 --- a/etc/events.xml +++ b/etc/events.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="customer_register_success"> - <observer name="send_customer_data_to_elasticsearch" instance="NicolasBejean\Customer\Observer\SendCustomerDateToElasticsearch" /> + <observer name="send_customer_data_to_elasticsearch" instance="NicolasBejean\Customer\Observer\SendCustomerDataToElasticsearch" /> </event> </config> -- GitLab