From 8d5a03f71fb188401a264b5519f6862dabb5d47a Mon Sep 17 00:00:00 2001
From: "@ChristelLoftus" <christel@bob.co.za>
Date: Thu, 29 Aug 2024 14:57:11 +0200
Subject: [PATCH] orderId for both created and updated

---
 Observer/OrderCreateWebhook.php |  2 +-
 Observer/OrderUpdateWebhook.php | 19 -------------------
 Observer/OrderWebhookBase.php   | 23 +++++++++++++++++++++--
 etc/events.xml                  |  5 +----
 4 files changed, 23 insertions(+), 26 deletions(-)
 delete mode 100644 Observer/OrderUpdateWebhook.php

diff --git a/Observer/OrderCreateWebhook.php b/Observer/OrderCreateWebhook.php
index 678f2de..74f1ce4 100644
--- a/Observer/OrderCreateWebhook.php
+++ b/Observer/OrderCreateWebhook.php
@@ -14,6 +14,6 @@ class OrderCreateWebhook extends OrderWebhookBase
         }
 
         // Extract order data and send to the webhook URL
-        $this->sendWebhook($order, 'order_created');
+        $this->sendWebhook($order);
     }
 }
diff --git a/Observer/OrderUpdateWebhook.php b/Observer/OrderUpdateWebhook.php
deleted file mode 100644
index 3074bdd..0000000
--- a/Observer/OrderUpdateWebhook.php
+++ /dev/null
@@ -1,19 +0,0 @@
-<?php
-
-namespace BobGroup\BobGo\Observer;
-
-use Magento\Framework\Event\Observer;
-
-class OrderUpdateWebhook extends OrderWebhookBase
-{
-    public function execute(Observer $observer)
-    {
-        $order = $observer->getEvent()->getOrder();
-        if (!$order) {
-            return;
-        }
-
-        // Extract order data and send to the webhook URL
-        $this->sendWebhook($order, 'order_updated');
-    }
-}
diff --git a/Observer/OrderWebhookBase.php b/Observer/OrderWebhookBase.php
index b17375e..f4ca74d 100644
--- a/Observer/OrderWebhookBase.php
+++ b/Observer/OrderWebhookBase.php
@@ -21,17 +21,36 @@ abstract class OrderWebhookBase implements ObserverInterface
         $this->storeManager = $storeManager;
     }
 
-    protected function sendWebhook($order, $eventType)
+    protected function sendWebhook($order)
     {
         // Webhook URL
         $url = $this->getWebhookUrl();
 
         $storeId = $this->getStoreId();
 
+        $orderId = $order->getId();
+
+        // Get the order creation time
+        $createdAt = strtotime($order->getCreatedAt());
+        $currentTime = time();
+
+        // Define a time threshold  to consider the order as newly created
+        $threshold = 5; // 5  seconds
+
+        // Determine the event type based on the creation time
+        if (($currentTime - $createdAt) < $threshold) {
+            $eventType = 'order_created';
+        } else {
+            $eventType = 'order_updated';
+        }
+
+        // Log the event type for debugging purposes
+        $this->logger->info('event: ' . $eventType);
+
         // Prepare payload
         $data = [
             'event' => $eventType,
-            'order_id' => $order->getId(),
+            'order_id' => $orderId,
             'channel_identifier' => $this->getStoreUrl(),
             'store_id' => $storeId,
         ];
diff --git a/etc/events.xml b/etc/events.xml
index 3e71bc3..d4d14f1 100644
--- a/etc/events.xml
+++ b/etc/events.xml
@@ -1,9 +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="sales_order_place_after">
-        <observer name="order_create_webhook" instance="BobGroup\BobGo\Observer\OrderCreateWebhook"/>
-    </event>
     <event name="sales_order_save_after">
-        <observer name="order_update_webhook" instance="BobGroup\BobGo\Observer\OrderUpdateWebhook"/>
+        <observer name="order_create_webhook" instance="BobGroup\BobGo\Observer\OrderCreateWebhook"/>
     </event>
 </config>
-- 
GitLab