diff --git a/Observer/OrderCreateWebhook.php b/Observer/OrderCreateWebhook.php index 678f2dee5df3b445e2124d56d535e561e5c99863..74f1ce4520155ee9b072cd2b6d0d2c6e00ea89a8 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 3074bddd68e3a637b7fa8bd713a2ffe9552889d9..0000000000000000000000000000000000000000 --- 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 b17375e6f08e7e80c7f924f4fc56cb01ea41979c..f4ca74d25d5bde245aa25811b05a6291b85d126c 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 3e71bc3795dd11236bc707cf656171f3bdf40f11..d4d14f162c3eea3bb4a6996712bf1c6bcd58d216 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>