Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 129
0.00% covered (danger)
0.00%
0 / 5
CRAP
0.00% covered (danger)
0.00%
0 / 1
Location
0.00% covered (danger)
0.00%
0 / 129
0.00% covered (danger)
0.00%
0 / 5
90
0.00% covered (danger)
0.00%
0 / 1
 setupMapping
0.00% covered (danger)
0.00%
0 / 105
0.00% covered (danger)
0.00%
0 / 1
2
 preSetupFields
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
 preSetup
0.00% covered (danger)
0.00%
0 / 10
0.00% covered (danger)
0.00%
0 / 1
12
 deleteEntity
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
 clearEntity
0.00% covered (danger)
0.00%
0 / 5
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace BO\Zmsdldb\Importer\MySQL\Entity;
4
5class Location extends Base
6{
7    protected $fieldMapping = [
8        'id' => 'id',
9        'name' => 'name',
10        'category.name' => 'category_name',
11        'category.identifier' => 'category_identifier',
12        'authority.id' => 'authority_id',
13        'authority.name' => 'authority_name',
14        'meta.locale' => 'locale',
15        'note' => 'note',
16        'category' => 'category_json',
17        'urgent' => 'urgent_json',
18        'opening_times' => 'opening_times_json',
19        'transit' => 'transit_json',
20        'payment_info' => 'payment_json',
21        'accessibility' => 'accessibility_json',
22        'appointment' => 'appointment_json',
23        '__RAW__' => 'data_json'
24    ];
25    /**
26     * @SuppressWarnings(PHPMD.ExcessiveMethodLength)
27     */
28    #[\Override]
29    protected function setupMapping()
30    {
31        $this->referanceMapping = [
32            'name' => [
33                'class' => 'BO\\Zmsdldb\\Importer\\MySQL\\Entity\\Search',
34                'neededFields' => [
35                    'id' => 'object_id',
36                    'meta.locale' => 'locale',
37                    'name' => 'search_value'
38                ],
39                'addFields' => [
40                    'entity_type' => static::getTableName(),
41                    'search_type' => 'name'
42                ],
43                'multiple' => false,
44                'clearFields' => [
45                    'entity_type' => static::getTableName(),
46                    'locale' => $this->get('meta.locale')
47                ],
48                'deleteFields' => [
49                    'object_id' => $this->get('id'),
50                    'locale' => $this->get('meta.locale'),
51                    'entity_type' => static::getTableName()
52                ],
53                'selfAsArray' => true
54            ],
55            'address' => [
56                'class' => 'BO\\Zmsdldb\\Importer\\MySQL\\Entity\\Search',
57                'neededFields' => [
58                    'id' => 'object_id',
59                    'meta.locale' => 'locale',
60                    'address' => 'search_value',
61                ],
62                'addFields' => [
63                    'entity_type' => static::getTableName(),
64                    'search_type' => 'address'
65                ],
66                'deleteFields' => [
67                    'object_id' => $this->get('id'),
68                    'locale' => $this->get('meta.locale'),
69                    'entity_type' => static::getTableName()
70                ],
71                'multiple' => false,
72                'clearFields' => [
73                    'entity_type' => static::getTableName(),
74                    'locale' => $this->get('meta.locale')
75                ],
76                'selfAsArray' => true
77            ],
78            'meta.keywords' => [
79                'class' => 'BO\\Zmsdldb\\Importer\\MySQL\\Entity\\Search',
80                'neededFields' => [
81                    'id' => 'object_id',
82                    'meta.locale' => 'locale',
83                    'meta.keywords' => 'search_value',
84                ],
85                'addFields' => [
86                    'entity_type' => static::getTableName(),
87                    'search_type' => 'keywords'
88                ],
89                'deleteFields' => [
90                    'object_id' => $this->get('id'),
91                    'locale' => $this->get('meta.locale'),
92                    'entity_type' => static::getTableName()
93                ],
94                'multiple' => false,
95                'clearFields' => [
96                    'entity_type' => static::getTableName(),
97                    'locale' => $this->get('meta.locale')
98                ],
99                'selfAsArray' => true
100            ],
101            'meta' => [
102                'class' => 'BO\\Zmsdldb\\Importer\\MySQL\\Entity\\Meta',
103                'neededFields' => [
104                    'id' => 'object_id',
105                    'meta.locale' => 'locale'
106                ],
107                'addFields' => [
108                    'type' => static::getTableName()
109                ],
110                'deleteFields' => [
111                    'object_id' => $this->get('id'),
112                    'locale' => $this->get('meta.locale'),
113                    'type' => static::getTableName()
114                ],
115                'multiple' => false,
116                'clearFields' => ['type' => static::getTableName(), 'locale' => $this->get('meta.locale')],
117            ],
118            'contact' => [
119                'class' => 'BO\\Zmsdldb\\Importer\\MySQL\\Entity\\Contact',
120                'neededFields' => [
121                    'id' => 'object_id',
122                    'meta.locale' => 'locale',
123                    'address' => 'address',
124                    'geo' => 'geo'
125                ],
126                'deleteFields' => [
127                    'object_id' => $this->get('id'),
128                    'locale' => $this->get('meta.locale')
129                ],
130                'addFields' => [],
131                'multiple' => false,
132                'selfAsArray' => true,
133                'clearFields' => ['locale' => $this->get('meta.locale')],
134            ],
135        ];
136    }
137
138    #[\Override]
139    public function preSetupFields()
140    {
141        #$this->dataRaw['payment'] = [
142        #    'payment_info' => $this->dataRaw['payment'],
143        #    'paymentcode' => ($this->dataRaw['paymentcode'] ?? null)
144        #];
145        $this->dataRaw['payment_info'] = [
146            'info' => $this->dataRaw['payment'],
147            'code' => ($this->dataRaw['paymentcode'] ?? null)
148        ];
149        #unset($this->dataRaw['paymentcode']);
150    }
151
152    #[\Override]
153    public function preSetup()
154    {
155        try {
156            $fields = $this->get(['id', 'meta.locale', 'meta.hash']);
157            $fields[] = static::getTableName();
158            $this->setStatus(static::STATUS_OLD);
159            if ($this->itemNeedsUpdate(...array_values($fields))) {
160                $this->setStatus(static::STATUS_NEW);
161                $this->setupFields();
162                $this->deleteEntity();
163                $this->deleteReferences();
164            }
165        } catch (\Exception $e) {
166            throw $e;
167        }
168    }
169
170    #[\Override]
171    public function deleteEntity(): bool
172    {
173        try {
174            return $this->deleteWith(
175                array_combine(['id', 'locale'], array_values($this->get(['id', 'meta.locale'])))
176            );
177        } catch (\Exception $e) {
178            throw $e;
179        }
180    }
181
182    #[\Override]
183    public function clearEntity(array $addWhere = []): bool
184    {
185        try {
186            return $this->deleteWith(
187                ['locale' => $this->get('meta.locale')]
188            );
189        } catch (\Exception $e) {
190            throw $e;
191        }
192    }
193}