diff --git a/Helper/LogHelper.php b/Helper/LogHelper.php index 553e9d02..78716920 100644 --- a/Helper/LogHelper.php +++ b/Helper/LogHelper.php @@ -27,7 +27,7 @@ class LogHelper protected $_log; public function __construct( - LoggerInterface $logger, + \Signifyd\Connect\Logger\Logger $logger, ScopeConfigInterface $scopeConfig ) { $this->_log = $scopeConfig->getValue('signifyd/logs/log', 'store'); diff --git a/Helper/PurchaseHelper.php b/Helper/PurchaseHelper.php index 00e000d2..a5620c58 100644 --- a/Helper/PurchaseHelper.php +++ b/Helper/PurchaseHelper.php @@ -109,9 +109,11 @@ protected function getIPAddress(Order $order) * @param $ip * @return mixed */ - protected function filterIp($ip) + protected function filterIp($ipString) { $matches = array(); + $ipArray = explode(',', $ipString); + $ip = $ipArray[0]; // Uses format IPv4 if (preg_match('/[0-9]{1,3}(?:\.[0-9]{1,3}){3}/', $ip, $matches)) { @@ -372,4 +374,16 @@ public function postCaseToSignifyd($caseData, $order) return $id; } + + /** + * Check if case has guaranty + * @param $order + * @return bool + */ + public function hasGuaranty($order) + { + $case = $this->getCase($order); + return ($case->getGuarantee() == 'N/A')? false : true; + } + } diff --git a/Logger/Handler.php b/Logger/Handler.php new file mode 100644 index 00000000..7f6b58a7 --- /dev/null +++ b/Logger/Handler.php @@ -0,0 +1,23 @@ +_helper->doesCaseExist($order)) { - return; + // backup hold order + $this->holdOrder($order); } $orderData = $this->_helper->processOrderData($order); @@ -74,17 +77,39 @@ public function execute(Observer $observer) // Post case to signifyd service $result = $this->_helper->postCaseToSignifyd($orderData, $order); - if($order->canHold()){ - $order->hold()->getResource()->save($order); - } + // Initial hold order + $this->holdOrder($order); if($result){ $case->setCode($result); $case->setMagentoStatus(CaseRetry::IN_REVIEW_STATUS)->setUpdated(strftime('%Y-%m-%d %H:%M:%S', time())); - $case->getResource()->save($case); + try { + $case->getResource()->save($case); + $this->_logger->debug('Case saved. Order No:' . $order->getIncrementId()); + } catch (\Exception $e) { + $this->_logger->error('Exception in: ' . __FILE__ . ', on line: ' . __LINE__); + $this->_logger->error('Exception:' . $e->__toString()); + } } } catch (\Exception $ex) { $this->_logger->error($ex->getMessage()); } } + + public function holdOrder($order) + { + if($order->canHold()){ + if(in_array($order->getPayment()->getMethod(), $this->specialMethods)){ + if(!$order->getEmailSent()){ return false; } + if($this->_helper->hasGuaranty($order)) { return false; } + } + + if(!$this->_helper->hasGuaranty($order)) { + $this->_logger->debug('Purchase Observer Order Hold: No: ' . $order->getIncrementId()); + $order->hold()->getResource()->save($order); + } + } + + return true; + } } diff --git a/composer.json b/composer.json index 7b5aef90..e08561c2 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "signifyd/signifyd-php":"0.1.*" }, "type": "magento2-module", - "version": "2.0.4", + "version": "2.0.5", "autoload": { "files": [ "registration.php" ], "psr-4": { diff --git a/etc/di.xml b/etc/di.xml index 555c6409..15c85801 100644 --- a/etc/di.xml +++ b/etc/di.xml @@ -9,4 +9,17 @@ + + + Magento\Framework\Filesystem\Driver\File + + + + + SignifydLogger + + Signifyd\Connect\Logger\Handler + + + diff --git a/etc/module.xml b/etc/module.xml index ec4bdfe1..72027f73 100644 --- a/etc/module.xml +++ b/etc/module.xml @@ -5,7 +5,7 @@ */ --> - +