Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
1 / 1
ImportdataXml
100.00% covered (success)
100.00%
16 / 16
100.00% covered (success)
100.00%
2 / 2
5
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
15 / 15
100.00% covered (success)
100.00%
1 / 1
4
 getXml
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
1<?php declare(strict_types=1);
2
3namespace Satag\AmicronEntityBundle\Struct\Xml\Import;
4
5use Symfony\Component\Serializer\Encoder\XmlEncoder;
6
7class ImportdataXml
8{
9    /**
10     * @var array{
11     *     Fields?: array<string, int|string>,
12     *     AtrposListe?: array{Atrpos: array<int, array{Fields: array<string, int|string>}>},
13     *     KunAdresseFields?: array<string, string>|string,
14     *     LfrAdresseFields?: array<string, string>|string,
15     *     AtrAdresseFields?: array<string, string>|string
16     * }
17     */
18    private array $data = [];
19
20    private readonly XmlEncoder $xmlEncoder;
21
22    public function __construct(
23        public readonly AuftragXml $auftragXml,
24        public readonly AdresseXml $adresseXml,
25        public readonly ?LieferadresseXml $lieferadresseXml = null,
26        public readonly ?AuftragsadresseXml $auftragsadresseXml = null,
27    ) {
28        $this->xmlEncoder = new XmlEncoder([
29            'xml_format_output' => true,
30            'xml_root_node_name' => 'AmicronAuftragData',
31        ]);
32        $this->data['Fields'] = $auftragXml->getData();
33        $this->data['AtrposListe']['Atrpos'] = $auftragXml->getAposData();
34        // empty most of the time
35
36        $this->data['KunAdresseFields'] = $this->adresseXml->getData();
37        $this->data['LfrAdresseFields'] = ($this->lieferadresseXml ?? $this->adresseXml)->getData();
38        $this->data['AtrAdresseFields'] = ($this->auftragsadresseXml ?? $this->adresseXml)->getData();
39
40        if (empty($this->data['KunAdresseFields'])) {
41            $this->data['KunAdresseFields'] = '';
42        }
43        if (empty($this->data['LfrAdresseFields'])) {
44            $this->data['LfrAdresseFields'] = '';
45        }
46        if (empty($this->data['AtrAdresseFields'])) {
47            $this->data['AtrAdresseFields'] = '';
48        }
49    }
50
51    public function getXml(): string
52    {
53        return $this->xmlEncoder->encode($this->data, 'xml');
54    }
55}