Failed Conditions
Pull Request — master (#92)
by
unknown
03:25
created

EntryTransactionDetail::getRelatedPartyAccount()   C

Complexity

Conditions 12
Paths 17

Size

Total Lines 48
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 15
CRAP Score 21.216

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 12
eloc 24
c 1
b 0
f 0
nc 17
nop 1
dl 0
loc 48
ccs 15
cts 25
cp 0.6
crap 21.216
rs 6.9666

How to fix   Complexity   

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
declare(strict_types=1);
4
5
namespace Genkgo\Camt\Camt052\Decoder;
6
7
use Genkgo\Camt\Decoder\EntryTransactionDetail as BaseDecoder;
8
use Genkgo\Camt\DTO;
9
use Genkgo\Camt\Iban;
10
use SimpleXMLElement;
11
12
class EntryTransactionDetail extends BaseDecoder
13
{
14
    /**
15
     * {@inheritdoc}
16
     */
17 7
    public function getRelatedPartyAccount(?SimpleXMLElement $xmlRelatedPartyTypeAccount): ?DTO\Account
18
    {
19 7
        if (!$xmlRelatedPartyTypeAccount) {
20 3
            return null;
21
        }
22
23 7
        if (false === isset($xmlRelatedPartyTypeAccount->Id)) {
24
            return null;
25
        }
26
27 7
        if (isset($xmlRelatedPartyTypeAccount->Id->IBAN)) {
28 6
            return new DTO\IbanAccount(new Iban((string) $xmlRelatedPartyTypeAccount->Id->IBAN));
29
        }
30
31 1
        if (isset($xmlRelatedPartyTypeAccount->Id->BBAN)) {
32
            return new DTO\BBANAccount((string) $xmlRelatedPartyTypeAccount->Id->BBAN);
33
        }
34
35 1
        if (isset($xmlRelatedPartyTypeAccount->Id->UPIC)) {
36
            return new DTO\UPICAccount((string) $xmlRelatedPartyTypeAccount->Id->UPIC);
37
        }
38
39 1
        if (isset($xmlRelatedPartyTypeAccount->Id->PrtryAcct)) {
40
            return new DTO\ProprietaryAccount((string) $xmlRelatedPartyTypeAccount->Id->PrtryAcct->Id);
41
        }
42
43 1
        if (isset($xmlRelatedPartyTypeAccount->Id->Othr)) {
44 1
            $xmlOtherIdentification = $xmlRelatedPartyTypeAccount->Id->Othr;
45 1
            $otherAccount = new DTO\OtherAccount((string) $xmlOtherIdentification->Id);
46
47 1
            if (isset($xmlOtherIdentification->SchmeNm)) {
48
                if (isset($xmlOtherIdentification->SchmeNm->Cd)) {
49
                    $otherAccount->setSchemeName((string) $xmlOtherIdentification->SchmeNm->Cd);
50
                }
51
52
                if (isset($xmlOtherIdentification->SchmeNm->Prtry)) {
53
                    $otherAccount->setSchemeName((string) $xmlOtherIdentification->SchmeNm->Prtry);
54
                }
55
            }
56
57 1
            if (isset($xmlOtherIdentification->Issr)) {
58
                $otherAccount->setIssuer((string) $xmlOtherIdentification->Issr);
59
            }
60
61 1
            return $otherAccount;
62
        }
63
64
        return null;
65
    }
66
}
67