diff --git a/Observer/ConfigChangeObserver.php b/Observer/ConfigChangeObserver.php new file mode 100644 index 0000000000000000000000000000000000000000..5b68f04d936c192239c72033f12ce70456f5d1e7 --- /dev/null +++ b/Observer/ConfigChangeObserver.php @@ -0,0 +1,116 @@ +<?php + +namespace BobGroup\BobGo\Observer; + +use Magento\Framework\Event\Observer; +use Magento\Framework\Event\ObserverInterface; +use Magento\Framework\App\Config\ScopeConfigInterface; +use Magento\Framework\HTTP\Client\Curl; + +class ConfigChangeObserver implements ObserverInterface +{ + protected $scopeConfig; + protected $curl; + + public function __construct( + ScopeConfigInterface $scopeConfig, + Curl $curl + ) { + $this->scopeConfig = $scopeConfig; + $this->curl = $curl; + } + + public function execute(Observer $observer) + { + $sectionId = $observer->getEvent()->getSection(); + + // Ensure we're working with the 'carriers' section + if ($sectionId === 'carriers') { + $isEnabled = $this->scopeConfig->getValue('carriers/bobgo/active', \Magento\Store\Model\ScopeInterface::SCOPE_STORE); + + // Check if the extension is enabled + if ($isEnabled) { + $url = 'https://api.dev.bobgo.co.za/rates-at-checkout/magento'; + + // Prepare the payload + $payload = json_encode([ + "identifier" => "woodemo3.bobgo.co.za", + "rate" => [ + "origin" => [ + "country" => "ZA", + "postal_code" => "0181", + "province" => "GP", + "city" => "Pretoria", + "name" => null, + "address1" => "125 Dallas Avenue", + "address2" => "Newlands", + "address3" => null, + "phone" => "", + "fax" => "", + "email" => null, + "address_type" => null, + "company_name" => "" + ], + "destination" => [ + "country" => "ZA", + "postal_code" => "0181", + "province" => "GP", + "city" => "Pretoria", + "name" => null, + "address1" => null, + "address2" => "", + "address3" => null, + "phone" => "", + "fax" => "", + "email" => null, + "address_type" => null, + "company_name" => "", + "shipping_suburb" => "Elarduspark" + ], + "currency" => "ZAR", + "locale" => "en", + "items" => [ + [ + "name" => "Colours With Variants - Has dimensions - Red", + "sku" => "sku-1", + "quantity" => 2, + "price" => 500, + "vendor" => "", + "requires_shipping" => true, + "taxable" => true, + "fulfillment_service" => "manual", + "properties" => null, + "product_id" => 160824, + "grams" => 2000, + "height" => 20, + "length" => 43, + "width" => 63, + "variant_id" => 160826, + "shipping_class" => "colours", + "shipping_class_id" => 41 + ] + ] + ] + ]); + + // Set headers + $this->curl->addHeader("Accept", "*/*"); + $this->curl->addHeader("Accept-Encoding", "deflate, gzip, br"); + $this->curl->addHeader("Content-Type", "application/json; charset=utf-8"); + $this->curl->addHeader("Host", "api.dev.bobgo.co.za"); + $this->curl->addHeader("User-Agent", "Magento/2.x"); + + // Send the request + $this->curl->post($url, $payload); + + // Check response status + if ($this->curl->getStatus() == 200) { + $response = $this->curl->getBody(); + // Log response or take further actions + } else { + // Handle error response + } + } + } + } +} diff --git a/etc/adminhtml/events.xml b/etc/adminhtml/events.xml new file mode 100644 index 0000000000000000000000000000000000000000..4cc2e52b3d3fd11d719cfcb6045fa566ff778739 --- /dev/null +++ b/etc/adminhtml/events.xml @@ -0,0 +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="admin_system_config_changed_section_carriers"> + <observer name="bobgo_config_change_observer" instance="BobGroup\BobGo\Observer\ConfigChangeObserver" /> + </event> +</config> diff --git a/etc/di.xml b/etc/di.xml index fedc9eeb0003631811c48f5cc00d3e7e837e0d52..28ae9658b7205673267451ea336107d1477d81bc 100644 --- a/etc/di.xml +++ b/etc/di.xml @@ -8,4 +8,10 @@ </argument> </arguments> </type> + <type name="BobGroup\BobGo\Observer\ConfigChangeObserver"> + <arguments> + <argument name="curl" xsi:type="object">Magento\Framework\HTTP\Client\Curl</argument> + </arguments> + </type> + </config>