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