Passed
Pull Request — master (#27)
by Sébastien
02:36
created

TransactionFailed::create()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 64
Code Lines 62

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 63
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 62
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 64
ccs 63
cts 63
cp 1
crap 1
rs 8.829

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace Sebdesign\VivaPayments\Events;
4
5
use Sebdesign\VivaPayments\Enums\TransactionStatus;
6
use Sebdesign\VivaPayments\Enums\TransactionType;
7
8
/** @see https://developer.vivawallet.com/webhooks-for-payments/transaction-failed/ */
9
class TransactionFailed
10
{
11 1
    public function __construct(
12
        public readonly bool $Moto,
13
        public readonly string $Email,
14
        public readonly string $Phone,
15
        public readonly string $BankId,
16
        public readonly bool $Systemic,
17
        public readonly bool $Switching,
18
        public readonly ?string $ParentId,
19
        public readonly float $Amount,
20
        public readonly string $ChannelId,
21
        public readonly int $TerminalId,
22
        public readonly string $MerchantId,
23
        public readonly string $OrderCode,
24
        public readonly ?string $ProductId,
25
        public readonly TransactionStatus $StatusId,
26
        public readonly string $FullName,
27
        public readonly ?string $ResellerId,
28
        public readonly string $InsDate,
29
        public readonly float $TotalFee,
30
        public readonly string $CardUniqueReference,
31
        public readonly string $CardToken,
32
        public readonly string $CardNumber,
33
        public readonly float $TipAmount,
34
        public readonly string $SourceCode,
35
        public readonly string $SourceName,
36
        public readonly ?float $Latitude,
37
        public readonly ?float $Longitude,
38
        public readonly string $CompanyName,
39
        public readonly string $TransactionId,
40
        public readonly string $CompanyTitle,
41
        public readonly string $PanEntryMode,
42
        public readonly int $ReferenceNumber,
43
        public readonly ?string $ResponseCode,
44
        public readonly string $CurrencyCode,
45
        public readonly string $OrderCulture,
46
        public readonly ?string $MerchantTrns,
47
        public readonly string $CustomerTrns,
48
        public readonly bool $IsManualRefund,
49
        public readonly ?string $TargetPersonId,
50
        public readonly ?string $TargetWalletId,
51
        public readonly bool $LoyaltyTriggered,
52
        public readonly TransactionType $TransactionTypeId,
53
        public readonly int $TotalInstallments,
54
        public readonly ?string $CardCountryCode,
55
        public readonly ?string $CardIssuingBank,
56
        public readonly int $RedeemedAmount,
57
        public readonly ?int $ClearanceDate,
58
        public readonly ?int $CurrentInstallment,
59
        /** @var string[] */
60
        public readonly array $Tags,
61
        public readonly ?string $BillId,
62
        public readonly ?string $ResellerSourceCode,
63
        public readonly ?string $ResellerSourceName,
64
        public readonly ?string $ResellerCompanyName,
65
        public readonly ?string $ResellerSourceAddress,
66
        public readonly string $CardExpirationDate,
67
        public readonly ?string $RetrievalReferenceNumber,
68
        /** @var string[] */
69
        public readonly array $AssignedMerchantUsers,
70
        /** @var string[] */
71
        public readonly array $AssignedResellerUsers,
72
        public readonly int $CardTypeId,
73
        public readonly ?int $DigitalWalletId,
74
        public readonly ?string $ResponseEventId,
75
        public readonly ?string $ElectronicCommerceIndicator,
76
    ) {
77
    }
78
79
    /** @phpstan-param  TransactionFailedArray  $attributes */
80 3
    public static function create(array $attributes): self
81
    {
82 3
        return new self(
83 3
            Moto: $attributes['Moto'],
84 3
            Email: $attributes['Email'],
85 3
            Phone: $attributes['Phone'],
86 3
            BankId: $attributes['BankId'],
87 3
            Systemic: $attributes['Systemic'],
88 3
            Switching: $attributes['Switching'],
89 3
            ParentId: $attributes['ParentId'] ?? null,
90 3
            Amount: $attributes['Amount'],
91 3
            ChannelId: $attributes['ChannelId'],
92 3
            TerminalId: $attributes['TerminalId'],
93 3
            MerchantId: $attributes['MerchantId'],
94 3
            OrderCode: $attributes['OrderCode'],
95 3
            ProductId: $attributes['ProductId'] ?? null,
96 3
            StatusId: TransactionStatus::from($attributes['StatusId']),
97 3
            FullName: $attributes['FullName'],
98 3
            ResellerId: $attributes['ResellerId'] ?? null,
99 3
            InsDate: $attributes['InsDate'],
100 3
            TotalFee: $attributes['TotalFee'],
101 3
            CardUniqueReference: $attributes['CardUniqueReference'],
102 3
            CardToken: $attributes['CardToken'],
103 3
            CardNumber: $attributes['CardNumber'],
104 3
            TipAmount: $attributes['TipAmount'],
105 3
            SourceCode: $attributes['SourceCode'],
106 3
            SourceName: $attributes['SourceName'],
107 3
            Latitude: $attributes['Latitude'] ?? null,
108 3
            Longitude: $attributes['Longitude'] ?? null,
109 3
            CompanyName: $attributes['CompanyName'],
110 3
            TransactionId: $attributes['TransactionId'],
111 3
            CompanyTitle: $attributes['CompanyTitle'],
112 3
            PanEntryMode: $attributes['PanEntryMode'],
113 3
            ReferenceNumber: $attributes['ReferenceNumber'],
114 3
            ResponseCode: $attributes['ResponseCode'] ?? null,
115 3
            CurrencyCode: $attributes['CurrencyCode'],
116 3
            OrderCulture: $attributes['OrderCulture'],
117 3
            MerchantTrns: $attributes['MerchantTrns'] ?? null,
118 3
            CustomerTrns: $attributes['CustomerTrns'],
119 3
            IsManualRefund: $attributes['IsManualRefund'],
120 3
            TargetPersonId: $attributes['TargetPersonId'] ?? null,
121 3
            TargetWalletId: $attributes['TargetWalletId'] ?? null,
122 3
            LoyaltyTriggered: $attributes['LoyaltyTriggered'],
123 3
            TransactionTypeId: TransactionType::from($attributes['TransactionTypeId']),
124 3
            TotalInstallments: $attributes['TotalInstallments'],
125 3
            CardCountryCode: $attributes['CardCountryCode'] ?? null,
126 3
            CardIssuingBank: $attributes['CardIssuingBank'] ?? null,
127 3
            RedeemedAmount: $attributes['RedeemedAmount'],
128 3
            ClearanceDate: $attributes['ClearanceDate'] ?? null,
129 3
            CurrentInstallment: $attributes['CurrentInstallment'] ?? null,
130 3
            Tags: $attributes['Tags'],
131 3
            BillId: $attributes['BillId'] ?? null,
132 3
            ResellerSourceCode: $attributes['ResellerSourceCode'] ?? null,
133 3
            ResellerSourceName: $attributes['ResellerSourceName'] ?? null,
134 3
            ResellerCompanyName: $attributes['ResellerCompanyName'] ?? null,
135 3
            ResellerSourceAddress: $attributes['ResellerSourceAddress'] ?? null,
136 3
            CardExpirationDate: $attributes['CardExpirationDate'],
137 3
            RetrievalReferenceNumber: $attributes['RetrievalReferenceNumber'] ?? null,
138 3
            AssignedMerchantUsers: $attributes['AssignedMerchantUsers'],
139 3
            AssignedResellerUsers: $attributes['AssignedResellerUsers'],
140 3
            CardTypeId: $attributes['CardTypeId'],
141 3
            DigitalWalletId: $attributes['DigitalWalletId'] ?? null,
142 3
            ResponseEventId: $attributes['ResponseEventId'] ?? null,
143 3
            ElectronicCommerceIndicator: $attributes['ElectronicCommerceIndicator'] ?? null,
144
        );
145
    }
146
}
147