Completed
Pull Request — master (#14)
by Yann
02:46
created

Message::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
cc 1
eloc 2
nc 1
nop 1
crap 1
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 10
    public function __construct(Statement $statementDecoder)
18
    {
19 10
        $this->statementDecoder = $statementDecoder;
20 10
    }
21
22
    /**
23
     * @param DTO\Message      $message
24
     * @param SimpleXMLElement $document
25
     */
26 9
    public function addGroupHeader(DTO\Message $message, SimpleXMLElement $document)
27
    {
28 9
        $xmlGroupHeader = $document->BkToCstmrStmt->GrpHdr;
29 9
        $groupHeader = new DTO\GroupHeader(
30 9
            (string)$xmlGroupHeader->MsgId,
31 9
            new DateTimeImmutable((string)$xmlGroupHeader->CreDtTm)
32 9
        );
33
34 9
        $message->setGroupHeader($groupHeader);
35 9
    }
36
37
    /**
38
     * @param DTO\Message      $message
39
     * @param SimpleXMLElement $document
40
     */
41 9
    public function addStatements(DTO\Message $message, SimpleXMLElement $document)
42 1
    {
43 9
        $statements = [];
44
45 9
        $xmlStatements = $document->BkToCstmrStmt->Stmt;
46 9
        foreach ($xmlStatements as $xmlStatement) {
47 9
            $statement = new DTO\Statement(
48 9
                (string) $xmlStatement->Id,
49 9
                new DateTimeImmutable((string)$xmlStatement->CreDtTm),
50 9
                new DTO\Account(new Iban((string)$xmlStatement->Acct->Id->IBAN))
51 9
            );
52
53 9
            $this->statementDecoder->addBalances($statement, $xmlStatement);
54 9
            $this->statementDecoder->addEntries($statement, $xmlStatement);
55
56 9
            $statements[] = $statement;
57 9
        }
58
59 9
        $message->setStatements($statements);
60 9
    }
61
}
62