Addresscheck::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 8
dl 0
loc 13
rs 10
c 0
b 0
f 0

How to fix   Many Parameters   

Many Parameters

Methods with many parameters are not only hard to understand, but their parameters also often become inconsistent when you need more, or different data.

There are several approaches to avoid long parameter lists:

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 - 2016 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\Model\Api\Request;
28
29
/**
30
 * Class for the PAYONE Server API request "addresscheck"
31
 */
32
class Addresscheck extends AddressRequest
33
{
34
    /*
35
     * Array of valid countries for addresscheck basic
36
     *
37
     * @var array
38
     */
39
    protected $aValidCountrys = [
40
        'BE',
41
        'DK',
42
        'DE',
43
        'FI',
44
        'FR',
45
        'IT',
46
        'CA',
47
        'LU',
48
        'NL',
49
        'NO',
50
        'AT',
51
        'PL',
52
        'PT',
53
        'SE',
54
        'CH',
55
        'SK',
56
        'ES',
57
        'CZ',
58
        'HU',
59
        'US',
60
    ];
61
    
62
    /**
63
     * Checked addresses resource model
64
     * 
65
     * @var \Payone\Core\Model\ResourceModel\CheckedAddresses 
66
     */
67
    protected $addressesChecked;
68
69
    /**
70
     * PAYONE Addresscheck helper
71
     *
72
     * @var \Payone\Core\Helper\Addresscheck
73
     */
74
    protected $addresscheckHelper;
75
76
    /**
77
     * Constructor
78
     *
79
     * @param \Payone\Core\Helper\Shop                          $shopHelper
80
     * @param \Payone\Core\Helper\Environment                   $environmentHelper
81
     * @param \Payone\Core\Helper\Api                           $apiHelper
82
     * @param \Payone\Core\Helper\Toolkit                       $toolkitHelper
83
     * @param \Payone\Core\Model\ResourceModel\ApiLog           $apiLog
84
     * @param \Payone\Core\Helper\Customer                      $customerHelper
85
     * @param \Payone\Core\Model\ResourceModel\CheckedAddresses $addressesChecked
86
     * @param \Payone\Core\Helper\Addresscheck                  $addresscheckHelper
87
     */
88
    public function __construct(
89
        \Payone\Core\Helper\Shop $shopHelper,
90
        \Payone\Core\Helper\Environment $environmentHelper,
91
        \Payone\Core\Helper\Api $apiHelper,
92
        \Payone\Core\Helper\Toolkit $toolkitHelper,
93
        \Payone\Core\Model\ResourceModel\ApiLog $apiLog,
94
        \Payone\Core\Helper\Customer $customerHelper,
95
        \Payone\Core\Model\ResourceModel\CheckedAddresses $addressesChecked,
96
        \Payone\Core\Helper\Addresscheck $addresscheckHelper
97
    ) {
98
        parent::__construct($shopHelper, $environmentHelper, $apiHelper, $toolkitHelper, $apiLog, $customerHelper);
99
        $this->addressesChecked = $addressesChecked;
100
        $this->addresscheckHelper = $addresscheckHelper;
101
    }
102
103
    /**
104
     * Get addresscheck type
105
     *
106
     * @param  bool $blIsBillingAddress
107
     * @return string
108
     */
109
    protected function getAddresscheckType($blIsBillingAddress)
110
    {
111
        $sConfigField = 'check_billing';
112
        if ($blIsBillingAddress === false) {
113
            $sConfigField = 'check_shipping';
114
        }
115
        return $this->shopHelper->getConfigParam($sConfigField, 'address_check', 'payone_protect');
116
    }
117
118
    /**
119
     * Check if the addresscheck is available for the given check-type and address-country
120
     *
121
     * @param  string                                   $sAddresscheckType
122
     * @param  \Magento\Quote\Api\Data\AddressInterface $oAddress
123
     * @return bool
124
     */
125
    protected function validateTypeToCountry($sAddresscheckType, \Magento\Quote\Api\Data\AddressInterface $oAddress)
0 ignored issues
show
Bug introduced by
The type Magento\Quote\Api\Data\AddressInterface 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...
126
    {
127
        if (in_array($sAddresscheckType, ['PE', 'BB', 'PB']) && $oAddress->getCountryId() != 'DE') {
128
            //AddressCheck Person only available for germany
129
            return false;
130
        }
131
        if ($sAddresscheckType == 'BA' && array_search($oAddress->getCountryId(), $this->aValidCountrys) === false) {
132
            //AddressCheck Basic only available for certain countries
133
            return false;
134
        }
135
        return true;
136
    }
137
138
    /**
139
     * Send request "addresscheck" to PAYONE server API
140
     *
141
     * @param  \Magento\Quote\Api\Data\AddressInterface $oAddress
142
     * @param  bool                                     $blIsBillingAddress
143
     * @return array|bool
144
     */
145
    public function sendRequest(\Magento\Quote\Api\Data\AddressInterface $oAddress, $blIsBillingAddress = false)
146
    {
147
        if (!$this->addresscheckHelper->isCheckEnabled($blIsBillingAddress)) { // check not needed because of configuration
148
            return true;
149
        }
150
151
        $sType = $this->getAddresscheckType($blIsBillingAddress);
152
        if (!$this->validateTypeToCountry($sType, $oAddress)) {
153
            return ['wrongCountry' => true]; //Simulate successful check
154
        }
155
156
        $this->addParameter('request', 'addresscheck');
157
        $this->addParameter('mode', $this->shopHelper->getConfigParam('mode', 'address_check', 'payone_protect')); //Operationmode live or test
158
        $this->addParameter('aid', $this->shopHelper->getConfigParam('aid')); //ID of PayOne Sub-Account
159
        $this->addParameter('addresschecktype', $sType);
160
        $this->addParameter('language', $this->shopHelper->getLocale());
161
        $this->addAddress($oAddress);
162
163
        if ($this->addressesChecked->wasAddressCheckedBefore($oAddress, $sType) === false) {
164
            $aResponse = $this->send();
165
            if ($aResponse['status'] == 'VALID') {
166
                $this->addressesChecked->addCheckedAddress($oAddress, $aResponse, $sType);
167
            }
168
            return $aResponse;
169
        }
170
        return true;
171
    }
172
}
173