Header::setData()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 8
c 0
b 0
f 0
dl 0
loc 13
ccs 9
cts 9
cp 1
rs 10
cc 2
nc 2
nop 1
crap 2
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\AddressBook;
13
14
use Riesenia\Pohoda\AbstractAgenda;
15
use Riesenia\Pohoda\Common;
16
use Riesenia\Pohoda\Type\Address;
17
18
class Header extends AbstractAgenda
19
{
20
    use Common\AddParameterTrait;
21
22
    /** @var string[] */
23
    protected array $refElements = [
24
        'paymentType',
25
        'centre',
26
        'activity',
27
        'contract',
28
        'number',
29
        'accountingReceivedInvoice',
30
        'accountingIssuedInvoice',
31
        'classificationVATReceivedInvoice',
32
        'classificationVATIssuedInvoice',
33
        'classificationKVDPHReceivedInvoice',
34
        'classificationKVDPHIssuedInvoice',
35
        'accountForInvoicing',
36
        'foreignCurrency',
37
    ];
38
39
    /** @var string[] */
40
    protected array $elements = [
41
        'identity',
42
        'region',
43
        'phone',
44
        'mobil',
45
        'fax',
46
        'email',
47
        'web',
48
        'ICQ',
49
        'Skype',
50
        'GPS',
51
        'credit',
52
        'priceIDS',
53
        'maturity',
54
        'maturityCommitments',
55
        'paymentType',
56
        'agreement',
57
        'number',
58
        'ost1', 'ost2',
59
        'p1', 'p2', 'p3', 'p4', 'p5', 'p6',
60
        'markRecord',
61
        'message',
62
        'note',
63
        'intNote',
64
        'accountingReceivedInvoice',
65
        'accountingIssuedInvoice',
66
        'classificationVATReceivedInvoice',
67
        'classificationVATIssuedInvoice',
68
        'classificationKVDPHReceivedInvoice',
69
        'classificationKVDPHIssuedInvoice',
70
        'accountForInvoicing',
71
        'foreignCurrency',
72
        'centre',
73
        'activity',
74
        'contract',
75
        'adGroup',
76
    ];
77
78
    /**
79
     * {@inheritdoc}
80
     */
81 6
    public function setData(array $data): parent
82
    {
83
        // process identity
84 6
        if (isset($data['identity'])) {
85 6
            $identity = new Address($this->dependenciesFactory);
86 6
            $identity
87 6
                ->setDirectionalVariable($this->useOneDirectionalVariables)
88 6
                ->setResolveOptions($this->resolveOptions)
89 6
                ->setData($data['identity']);
90 6
            $data['identity'] = $identity;
91
        }
92
93 6
        return parent::setData($data);
0 ignored issues
show
Bug Best Practice introduced by
The expression return parent::setData($data) returns the type Riesenia\Pohoda\AbstractAgenda which is incompatible with the type-hinted return parent.
Loading history...
94
    }
95
96
    /**
97
     * {@inheritdoc}
98
     */
99 5
    public function getXML(): \SimpleXMLElement
100
    {
101 5
        $xml = $this->createXML()->addChild('adb:addressbookHeader', '', $this->namespace('adb'));
102
103 5
        $this->addElements($xml, \array_merge($this->elements, ['parameters']), 'adb');
104
105 5
        return $xml;
106
    }
107
108
    /**
109
     * {@inheritdoc}
110
     */
111 1
    protected function configureOptions(Common\OptionsResolver $resolver): void
112
    {
113
        // available options
114 1
        $resolver->setDefined($this->elements);
115
116
        // validate / format options
117 1
        $resolver->setNormalizer('region', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string32'));
118 1
        $resolver->setNormalizer('phone', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string40'));
119 1
        $resolver->setNormalizer('mobil', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string24'));
120 1
        $resolver->setNormalizer('fax', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string24'));
121 1
        $resolver->setNormalizer('email', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string98'));
122 1
        $resolver->setNormalizer('web', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string32'));
123 1
        $resolver->setNormalizer('ICQ', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string12'));
124 1
        $resolver->setNormalizer('Skype', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string32'));
125 1
        $resolver->setNormalizer('GPS', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string38'));
126 1
        $resolver->setNormalizer('credit', $this->dependenciesFactory->getNormalizerFactory()->getClosure('float'));
127 1
        $resolver->setNormalizer('priceIDS', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string10'));
128 1
        $resolver->setNormalizer('maturity', $this->dependenciesFactory->getNormalizerFactory()->getClosure('int'));
129 1
        $resolver->setNormalizer('agreement', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string12'));
130 1
        $resolver->setNormalizer('ost1', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string8'));
131 1
        $resolver->setNormalizer('ost2', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string8'));
132 1
        $resolver->setNormalizer('p1', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
133 1
        $resolver->setNormalizer('p2', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
134 1
        $resolver->setNormalizer('p3', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
135 1
        $resolver->setNormalizer('p4', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
136 1
        $resolver->setNormalizer('p5', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
137 1
        $resolver->setNormalizer('p6', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
138 1
        $resolver->setNormalizer('markRecord', $this->dependenciesFactory->getNormalizerFactory()->getClosure('bool'));
139 1
        $resolver->setNormalizer('message', $this->dependenciesFactory->getNormalizerFactory()->getClosure('string64'));
140
    }
141
}
142