ChargeRequest   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 90
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 4
dl 0
loc 90
ccs 26
cts 26
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 13 1
A create() 0 9 1
A toArray() 0 13 1
A getFields() 0 9 1
1
<?php
2
3
namespace PHPieces\ANZGateway;
4
5
use PHPieces\ANZGateway\models\Card;
6
use PHPieces\ANZGateway\models\Merchant;
7
use PHPieces\ANZGateway\models\Payment;
8
use PHPieces\ANZGateway\models\TransactionSource;
9
10
class ChargeRequest
11
{
12
    const VPC_VERSION = "vpc_Version";
13
    const COMMAND_TYPE = "vpc_Command";
14
15
    /**
16
     *
17
     * @var Card
18
     */
19
    private $card;
20
21
    /**
22
     *
23
     * @var Merchant
24
     */
25
    private $merchant;
26
27
    /**
28
     *
29
     * @var TransactionSource
30
     */
31
    private $transactionSource;
32
33
    /**
34
     *
35
     * @var Payment  */
36
    private $payment;
37
38
    /**
39
     * The value for this field is always 1 and is the same for test
40
     * and live transactions.
41
     * @var int
42
     */
43
    private $version = 1;
44
45
    /**
46
     * The value for this field is always ‘pay’ and is the same for
47
     * test and live transactions.
48
     * @var string
49
     */
50
    private $commandType = 'pay';
51
52 9
    public function __construct(
53
        Card $card,
54
        Merchant $merchant,
55
        TransactionSource $transactionSource,
56
        Payment $payment
57
    ) {
58
    
59
60 9
        $this->card = $card;
61 9
        $this->merchant = $merchant;
62 9
        $this->transactionSource = $transactionSource;
63 9
        $this->payment = $payment;
64 9
    }
65
66 9
    public static function create(array $params) : self
67
    {
68 9
        return new self(
69 9
            Card::create($params),
70 9
            Merchant::create($params),
71 9
            TransactionSource::create($params),
72 9
            Payment::create($params)
73
        );
74
    }
75
76 6
    public function toArray() : array
77
    {
78 6
        return array_merge(
79 6
            $this->card->toArray(),
80 6
            $this->merchant->toArray(),
81 6
            $this->transactionSource->toArray(),
82 6
            $this->payment->toArray(),
83
            [
84 6
            self::COMMAND_TYPE => $this->commandType,
85 6
            self::VPC_VERSION  => $this->version,
86
            ]
87
        );
88
    }
89
90 3
    public static function getFields(): array
91
    {
92 3
        return array_merge(
93 3
            Card::getFields(),
94 3
            Payment::getFields(),
95 3
            TransactionSource::getFields(),
96 3
            Merchant::getFields()
97
        );
98
    }
99
}
100