BaseRequestBuilder   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 26
dl 0
loc 59
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A buildCard() 0 18 1
A __construct() 0 12 1
A buildBaseRequest() 0 10 1
1
<?php
2
namespace Paranoia\Builder\NestPay;
3
4
use Paranoia\Builder\AbstractRequestBuilder;
5
use Paranoia\Configuration\AbstractConfiguration;
6
use Paranoia\Formatter\DecimalFormatter;
7
use Paranoia\Formatter\IsoNumericCurrencyCodeFormatter;
8
use Paranoia\Formatter\NestPay\ExpireDateFormatter;
9
use Paranoia\Formatter\SingleDigitInstallmentFormatter;
10
use Paranoia\Request\Resource\Card;
11
use Paranoia\Request\Resource\ResourceInterface;
12
13
abstract class BaseRequestBuilder extends AbstractRequestBuilder
14
{
15
    /** @var DecimalFormatter */
16
    protected $amountFormatter;
17
18
    /** @var  IsoNumericCurrencyCodeFormatter */
19
    protected $currencyCodeFormatter;
20
21
    /** @var  SingleDigitInstallmentFormatter */
22
    protected $installmentFormatter;
23
24
    /** @var  ExpireDateFormatter */
25
    protected $expireDateFormatter;
26
27
    public function __construct(
28
        AbstractConfiguration $configuration,
29
        IsoNumericCurrencyCodeFormatter $currencyCodeFormatter,
30
        DecimalFormatter $amountFormatter,
31
        SingleDigitInstallmentFormatter $installmentFormatter,
32
        ExpireDateFormatter $expireDateFormatter
33
    ) {
34
        parent::__construct($configuration);
35
        $this->amountFormatter = $amountFormatter;
36
        $this->currencyCodeFormatter = $currencyCodeFormatter;
37
        $this->installmentFormatter = $installmentFormatter;
38
        $this->expireDateFormatter = $expireDateFormatter;
39
    }
40
41
    protected function buildBaseRequest($type)
42
    {
43
        /** @var \Paranoia\Configuration\NestPay $config */
44
        $config = $this->configuration;
45
        return [
46
            'Mode'     => $config->getMode(),
47
            'ClientId' => $config->getClientId(),
48
            'Name'     => $config->getUsername(),
49
            'Password' => $config->getPassword(),
50
            'Type'     =>  $type,
51
        ];
52
    }
53
54
    protected function buildCard(ResourceInterface $card)
55
    {
56
        assert($card instanceof Card);
57
58
        /** @var Card $_card */
59
        $_card = $card;
60
61
        $expireDate = $this->expireDateFormatter->format(
62
            [
63
                $_card->getExpireMonth(),
64
                $_card->getExpireYear()
65
            ]
66
        );
67
68
        return array(
69
            'Number'     => $_card->getNumber(),
70
            'Cvv2Val'    => $_card->getSecurityCode(),
71
            'Expires'    => $expireDate
72
        );
73
    }
74
}
75