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