Passed
Pull Request — master (#214)
by Florian
02:54
created

Pending::sendSoftDeclineMail()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * PAYONE Magento 2 Connector is free software: you can redistribute it and/or modify
5
 * it under the terms of the GNU Lesser General Public License as published by
6
 * the Free Software Foundation, either version 3 of the License, or
7
 * (at your option) any later version.
8
 *
9
 * PAYONE Magento 2 Connector is distributed in the hope that it will be useful,
10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 * GNU Lesser General Public License for more details.
13
 *
14
 * You should have received a copy of the GNU Lesser General Public License
15
 * along with PAYONE Magento 2 Connector. If not, see <http://www.gnu.org/licenses/>.
16
 *
17
 * PHP version 5
18
 *
19
 * @category  Payone
20
 * @package   Payone_Magento2_Plugin
21
 * @author    FATCHIP GmbH <[email protected]>
22
 * @copyright 2003 - 2018 Payone GmbH
23
 * @license   <http://www.gnu.org/licenses/> GNU Lesser General Public License
24
 * @link      http://www.payone.de
25
 */
26
27
namespace Payone\Core\Observer\Transactionstatus;
28
29
use Magento\Sales\Model\Order;
0 ignored issues
show
Bug introduced by
The type Magento\Sales\Model\Order was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
30
use Magento\Framework\Event\ObserverInterface;
0 ignored issues
show
Bug introduced by
The type Magento\Framework\Event\ObserverInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
31
use Magento\Framework\Event\Observer;
0 ignored issues
show
Bug introduced by
The type Magento\Framework\Event\Observer was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
32
use Payone\Core\Helper\Mail;
33
use Payone\Core\Model\PayoneConfig;
34
35
/**
36
 * Event observer for Transactionstatus pending
37
 */
38
class Pending implements ObserverInterface
39
{
40
    /**
41
     * Appointed observer object
42
     *
43
     * @var Appointed
44
     */
45
    protected $appointed = null;
46
47
    /**
48
     * PAYONE email helper object
49
     *
50
     * @var Mail
51
     */
52
    protected $emailHelper = null;
53
54
    /**
55
     * Constructor.
56
     *
57
     * @param Appointed $appointed
58
     * @param Mail      $emailHelper
59
     */
60
    public function __construct(Appointed $appointed, Mail $emailHelper)
61
    {
62
        $this->appointed = $appointed;
63
        $this->emailHelper = $emailHelper;
64
    }
65
66
    /**
67
     * Determine if the amazon soft decline mail has to be sent
68
     *
69
     * @param Order $oOrder
70
     * @param array $aStatus
71
     * @return bool
72
     */
73
    protected function isSoftDeclineMailNeeded(Order $oOrder, $aStatus)
74
    {
75
        if ($oOrder->getPayment()->getMethod() == PayoneConfig::METHOD_AMAZONPAY
76
            && isset($aStatus['transaction_status']) && $aStatus['transaction_status'] == 'pending'
77
            && isset($aStatus['reasoncode']) && $aStatus['reasoncode'] == 981
78
        ) {
79
            return true;
80
        }
81
        return false;
82
    }
83
84
    /**
85
     * Send amazon soft decline mail to customer
86
     *
87
     * @param  Order $oOrder
88
     * @return void
89
     */
90
    protected function sendSoftDeclineMail(Order $oOrder)
91
    {
92
        $this->emailHelper->sendEmail($oOrder->getCustomerEmail(), 'payone_amazon_soft_decline');
93
    }
94
95
    /**
96
     * Send the amazon soft decline mail to the customer if needed
97
     *
98
     * @param  Observer $observer
99
     * @return void
100
     */
101
    public function execute(Observer $observer)
102
    {
103
        // Execute appointed observer first to send order confirmation
104
        $this->appointed->execute($observer);
105
106
        /* @var $oOrder Order */
0 ignored issues
show
Unused Code Comprehensibility introduced by
43% of this comment could be valid code. Did you maybe forget this after debugging?

Sometimes obsolete code just ends up commented out instead of removed. In this case it is better to remove the code once you have checked you do not need it.

The code might also have been commented out for debugging purposes. In this case it is vital that someone uncomments it again or your project may behave in very unexpected ways in production.

This check looks for comments that seem to be mostly valid code and reports them.

Loading history...
107
        $oOrder = $observer->getOrder();
108
109
        if ($oOrder && $this->isSoftDeclineMailNeeded($oOrder, $observer->getTransactionstatus())) {
110
            $this->sendSoftDeclineMail($oOrder);
111
        }
112
    }
113
}
114