Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 152
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 / 152
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 / 128
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            'name' => [
136                'class' => 'BO\\Zmsdldb\\Importer\\MySQL\\Entity\\Search',
137                'neededFields' => [
138                    'id' => 'object_id',
139                    'meta.locale' => 'locale',
140                    'name' => 'search_value'
141                ],
142                'addFields' => [
143                    'entity_type' => static::getTableName(),
144                    'search_type' => 'name'
145                ],
146                'deleteFields' => [
147                    'object_id' => $this->get('id'),
148                    'locale' => $this->get('meta.locale'),
149                    'entity_type' => static::getTableName()
150                ],
151                'multiple' => false,
152                'clearFields' => [
153                    'entity_type' => static::getTableName(),
154                    'locale' => $this->get('meta.locale')
155                ],
156                'selfAsArray' => true
157            ],
158        ];
159    }
160
161    #[\Override]
162    public function preSetupFields()
163    {
164        #$this->dataRaw['payment'] = [
165        #    'payment_info' => $this->dataRaw['payment'],
166        #    'paymentcode' => ($this->dataRaw['paymentcode'] ?? null)
167        #];
168        $this->dataRaw['payment_info'] = [
169            'info' => $this->dataRaw['payment'],
170            'code' => ($this->dataRaw['paymentcode'] ?? null)
171        ];
172        #unset($this->dataRaw['paymentcode']);
173    }
174
175    #[\Override]
176    public function preSetup()
177    {
178        try {
179            $fields = $this->get(['id', 'meta.locale', 'meta.hash']);
180            $fields[] = static::getTableName();
181            $this->setStatus(static::STATUS_OLD);
182            if ($this->itemNeedsUpdate(...array_values($fields))) {
183                $this->setStatus(static::STATUS_NEW);
184                $this->setupFields();
185                $this->deleteEntity();
186                $this->deleteReferences();
187            }
188        } catch (\Exception $e) {
189            throw $e;
190        }
191    }
192
193    #[\Override]
194    public function deleteEntity(): bool
195    {
196        try {
197            return $this->deleteWith(
198                array_combine(['id', 'locale'], array_values($this->get(['id', 'meta.locale'])))
199            );
200        } catch (\Exception $e) {
201            throw $e;
202        }
203    }
204
205    #[\Override]
206    public function clearEntity(array $addWhere = []): bool
207    {
208        try {
209            return $this->deleteWith(
210                ['locale' => $this->get('meta.locale')]
211            );
212        } catch (\Exception $e) {
213            throw $e;
214        }
215    }
216}