Completed
Push — master ( aabf4d...606f02 )
by Frederik
9s
created

Message   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 6

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 4
c 1
b 0
f 0
lcom 1
cbo 6
dl 0
loc 52
ccs 27
cts 27
cp 1
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A addGroupHeader() 0 10 1
A addStatements() 0 20 2
1
<?php
2
3
namespace Genkgo\Camt\Camt053\Decoder;
4
5
use Genkgo\Camt\Camt053\DTO;
6
use DateTimeImmutable;
7
use SimpleXMLElement;
8
use Genkgo\Camt\Iban;
9
10
class Message
11
{
12
    /**
13
     * @var Statement
14
     */
15
    private $statementDecoder;
16
17 12
    public function __construct(Statement $statementDecoder)
18
    {
19 12
        $this->statementDecoder = $statementDecoder;
20 12
    }
21
22
    /**
23
     * @param DTO\Message      $message
24
     * @param SimpleXMLElement $document
25
     */
26 10
    public function addGroupHeader(DTO\Message $message, SimpleXMLElement $document)
27
    {
28 10
        $xmlGroupHeader = $document->BkToCstmrStmt->GrpHdr;
29 10
        $groupHeader = new DTO\GroupHeader(
30 10
            (string)$xmlGroupHeader->MsgId,
31 10
            new DateTimeImmutable((string)$xmlGroupHeader->CreDtTm)
32 10
        );
33
34 10
        $message->setGroupHeader($groupHeader);
35 10
    }
36
37
    /**
38
     * @param DTO\Message      $message
39
     * @param SimpleXMLElement $document
40
     */
41 10
    public function addStatements(DTO\Message $message, SimpleXMLElement $document)
42 9
    {
43 10
        $statements = [];
44
45 10
        $xmlStatements = $document->BkToCstmrStmt->Stmt;
46 10
        foreach ($xmlStatements as $xmlStatement) {
47 10
            $statement = new DTO\Statement(
48 10
                (string) $xmlStatement->Id,
49 10
                new DateTimeImmutable((string)$xmlStatement->CreDtTm),
50 10
                new DTO\Account(new Iban((string)$xmlStatement->Acct->Id->IBAN))
51 10
            );
52
53 10
            $this->statementDecoder->addBalances($statement, $xmlStatement);
54 10
            $this->statementDecoder->addEntries($statement, $xmlStatement);
55
56 10
            $statements[] = $statement;
57 10
        }
58
59 10
        $message->setStatements($statements);
60 10
    }
61
}
62