Header   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 100
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 0 Features 2
Metric Value
wmc 7
eloc 69
c 3
b 0
f 2
dl 0
loc 100
ccs 26
cts 26
cp 1
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A getXML() 0 15 4
A configureOptions() 0 22 3
1
<?php
2
3
/**
4
 * This file is part of riesenia/pohoda package.
5
 *
6
 * Licensed under the MIT License
7
 * (c) RIESENIA.com
8
 */
9
10
declare(strict_types=1);
11
12
namespace Riesenia\Pohoda\Order;
13
14
use Riesenia\Pohoda\Common\OptionsResolver;
15
use Riesenia\Pohoda\Document\AbstractHeader;
16
17
class Header extends AbstractHeader
18
{
19
    /** @var string[] */
20
    protected array $refElements = [
21
        'extId',
22
        'number',
23
        'paymentType',
24
        'priceLevel',
25
        'centre',
26
        'activity',
27
        'contract',
28
        'regVATinEU',
29
        'MOSS',
30
        'evidentiaryResourcesMOSS',
31
        'carrier',
32
    ];
33
34
    /** @var string[] */
35
    protected array $elements = [
36
        'extId',
37
        'orderType',
38
        'number',
39
        'numberOrder',
40
        'date',
41
        'dateDelivery',
42
        'dateFrom',
43
        'dateTo',
44
        'text',
45
        'partnerIdentity',
46
        'myIdentity',
47
        'paymentType',
48
        'priceLevel',
49
        'isExecuted',
50
        'isReserved',
51
        'centre',
52
        'activity',
53
        'contract',
54
        'regVATinEU',
55
        'MOSS',
56
        'evidentiaryResourcesMOSS',
57
        'accountingPeriodMOSS',
58
        'note',
59
        'carrier',
60
        'intNote',
61
        'markRecord',
62
        'histRate',
63
    ];
64
65
    /** @var string[] */
66
    protected array $additionalElements = [
67
        'id',
68
        'isDelivered',
69
        'permanentDocument',
70
    ];
71
72
    /**
73
     * {@inheritdoc}
74
     */
75 11
    public function getXML(): \SimpleXMLElement
76
    {
77 11
        if (is_null($this->namespace)) {
78 1
            throw new \LogicException('Namespace not set.');
79
        }
80
81 10
        if (is_null($this->nodePrefix)) {
82 1
            throw new \LogicException('Node name prefix not set.');
83
        }
84
85 9
        $xml = $this->createXML()->addChild($this->namespace . ':' . $this->nodePrefix . 'Header', '', $this->namespace($this->namespace));
86
87 9
        $this->addElements($xml, \array_merge($this->elements, ($this->useOneDirectionalVariables ? $this->additionalElements : []), ['parameters']), $this->namespace);
88
89 9
        return $xml;
90
    }
91
92
    /**
93
     * {@inheritdoc}
94
     */
95 2
    protected function configureOptions(OptionsResolver $resolver): void
96
    {
97 2
        $resolver->setDefined(array_merge($this->elements, ($this->useOneDirectionalVariables ? $this->additionalElements : [])));
98
99
        // validate / format options
100 2
        $resolver->setDefault('orderType', 'receivedOrder');
101 2
        $resolver->setAllowedValues('orderType', ['receivedOrder', 'issuedOrder']);
102 2
        $resolver->setNormalizer('numberOrder', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string32'));
103 2
        $resolver->setNormalizer('date', $this->dependenciesFactory->getNormalizerFactory()->getClosure('date'));
104 2
        $resolver->setNormalizer('dateDelivery', $this->dependenciesFactory->getNormalizerFactory()->getClosure('date'));
105 2
        $resolver->setNormalizer('dateFrom', $this->dependenciesFactory->getNormalizerFactory()->getClosure('date'));
106 2
        $resolver->setNormalizer('dateTo', $this->dependenciesFactory->getNormalizerFactory()->getClosure('date'));
107 2
        $resolver->setNormalizer('text', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string240'));
108 2
        $resolver->setNormalizer('isExecuted', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
109 2
        $resolver->setNormalizer('isReserved', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
110 2
        $resolver->setNormalizer('markRecord', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
111 2
        $resolver->setNormalizer('histRate', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
112
113 2
        if ($this->useOneDirectionalVariables) {
114 1
            $resolver->setNormalizer('id', $this->dependenciesFactory->getNormalizerFactory()->getClosure('int'));
115 1
            $resolver->setNormalizer('isDelivered', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
116 1
            $resolver->setNormalizer('permanentDocument', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
117
        }
118
    }
119
}
120