Skip to content

Commit

Permalink
Merge pull request #39 from TransbankDevelopers/feat/new-email-behavior
Browse files Browse the repository at this point in the history
Feat/new email behavior
  • Loading branch information
jgarciajovel committed May 2, 2022
2 parents d6153ec + 5c667d7 commit 1395bc9
Show file tree
Hide file tree
Showing 6 changed files with 139 additions and 0 deletions.
28 changes: 28 additions & 0 deletions Model/Config/ConfigEmail.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php

namespace Transbank\Webpay\Model\Config;

class ConfigEmail implements \Magento\Framework\Option\ArrayInterface
{
/**
* Options getter.
*
* @return array
*/
public function toOptionArray()
{
return [['value' => 'transbank', 'label' => __('Al confirmar el pago')],
['value' => 'default', 'label' => __('Default Magento')] ];
}

/**
* Get options in "key-value" format.
*
* @return array
*/
public function toArray()
{
return ['transbank' => __('Al confirmar el pago'),
'default' => __('Default Magento')];
}
}
6 changes: 6 additions & 0 deletions Model/Config/ConfigProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public function getPluginConfig()
'new_order_status' => $this->getOrderPendingStatus(),
'payment_successful_status' => $this->getOrderSuccessStatus(),
'payment_error_status' => $this->getOrderErrorStatus(),
'new_email_order' => $this->getOrderSuccessStatus(),
];

return $config;
Expand All @@ -51,4 +52,9 @@ public function getOrderErrorStatus()
{
return $this->scopeConfigInterface->getValue(self::ORDER_CONFIGS_ROUTE.'payment_error_status');
}

public function getEmailSettings()
{
return $this->scopeConfigInterface->getValue(self::ORDER_CONFIGS_ROUTE.'new_email_order');
}
}
45 changes: 45 additions & 0 deletions Observer/SendMail.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

namespace Transbank\Webpay\Observer;

use Magento\Framework\Event\ObserverInterface;

class SendMail implements ObserverInterface
{

protected $orderSender;
protected $_logger;

public function __construct (
\Psr\Log\LoggerInterface $logger,
\Magento\Sales\Model\Order $order,
\Magento\Sales\Model\Order\Email\Sender\OrderSender $orderSender,
\Transbank\Webpay\Model\Config\ConfigProvider $configProvider)
{
$this->_logger = $logger;
$this->order = $order;
$this->orderSender = $orderSender;
$this->configProvider = $configProvider;
}

public function execute(\Magento\Framework\Event\Observer $observer) {

$emailSettings = $this->configProvider->getEmailSettings();
$this->_logger->debug($emailSettings);

if ($emailSettings == 'transbank') {
$order = $observer->getEvent()->getOrder();
$this->_current_order = $order;

$order->setCanSendNewEmailFlag(true);
$order->save();

try {
$this->orderSender->send($order);
} catch (\Exception $e) {
$this->_logger->critical($e);
}
}
}

}
45 changes: 45 additions & 0 deletions Observer/SubmitObserver.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
<?php

namespace Transbank\Webpay\Observer;

use Magento\Framework\Event\ObserverInterface;

class SubmitObserver implements ObserverInterface
{
/**
* @param Observer $observer
* @return void
*/
protected $_logger;

public function __construct (
\Psr\Log\LoggerInterface $logger,
\Transbank\Webpay\Model\Config\ConfigProvider $configProvider
)
{
$this->_logger = $logger;
$this->configProvider = $configProvider;
}

public function execute(\Magento\Framework\Event\Observer $observer)
{
try {

$emailSettings = $this->configProvider->getEmailSettings();
$this->_logger->debug($emailSettings);

if ($emailSettings == 'transbank') {
$order = $observer->getEvent()->getOrder();
$this->_current_order = $order;

$order->setCanSendNewEmailFlag(false);
$order->save();
}

} catch (\ErrorException $e) {
$this->_logger->critical($e);
}
}

}

6 changes: 6 additions & 0 deletions etc/adminhtml/system.xml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@
<frontend_class>validate-number</frontend_class>
<comment>Posición en la que aparecerá la opción de pago, debe ser menor a otros medios de pago para que aparezca primero</comment>
</field>
<!-- New Email Order -->
<field id="new_email_order" translate="label" type="select" sortOrder="130" showInDefault="1" showInWebsite="1" showInStore="0">
<label>Comportamiento del Email</label>
<source_model>Transbank\Webpay\Model\Config\ConfigEmail</source_model>
<comment>Al seleccionar 'Default' el correo electrónico se enviará al crear el pedido y no al procesar la compra</comment>
</field>
</group>
<group id="security" translate="label" type="text" sortOrder="4" showInDefault="1" showInWebsite="1" showInStore="0">
<label>Parámetros de seguridad</label>
Expand Down
9 changes: 9 additions & 0 deletions etc/events.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<?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="checkout_onepage_controller_success_action">
<observer name="transbank_email" instance="Transbank\Webpay\Observer\SendMail"/>
</event>
<event name="sales_order_place_before">
<observer name="transbank_stop_email" instance="Transbank\Webpay\Observer\SubmitObserver"/>
</event>
</config>

0 comments on commit 1395bc9

Please sign in to comment.