Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
30 / 30 |
|
100.00% |
2 / 2 |
CRAP | |
100.00% |
1 / 1 |
ExchangeWaitingscope | |
100.00% |
30 / 30 |
|
100.00% |
2 / 2 |
4 | |
100.00% |
1 / 1 |
getQuerySelectByDateTime | |
100.00% |
15 / 15 |
|
100.00% |
1 / 1 |
2 | |||
getQueryUpdateByDateTime | |
100.00% |
15 / 15 |
|
100.00% |
1 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace BO\Zmsdb\Query; |
4 | |
5 | class ExchangeWaitingscope extends Base |
6 | { |
7 | /** |
8 | * @var String TABLE mysql table reference |
9 | */ |
10 | const TABLE = 'wartenrstatistik'; |
11 | |
12 | const WAITING_VALUES = " |
13 | AVG(echte_zeit_ab_00_spontan) as echte_zeit_ab_00_spontan, |
14 | AVG(echte_zeit_ab_01_spontan) as echte_zeit_ab_01_spontan, |
15 | AVG(echte_zeit_ab_02_spontan) as echte_zeit_ab_02_spontan, |
16 | AVG(echte_zeit_ab_03_spontan) as echte_zeit_ab_03_spontan, |
17 | AVG(echte_zeit_ab_04_spontan) as echte_zeit_ab_04_spontan, |
18 | AVG(echte_zeit_ab_05_spontan) as echte_zeit_ab_05_spontan, |
19 | AVG(echte_zeit_ab_06_spontan) as echte_zeit_ab_06_spontan, |
20 | AVG(echte_zeit_ab_07_spontan) as echte_zeit_ab_07_spontan, |
21 | AVG(echte_zeit_ab_08_spontan) as echte_zeit_ab_08_spontan, |
22 | AVG(echte_zeit_ab_09_spontan) as echte_zeit_ab_09_spontan, |
23 | AVG(echte_zeit_ab_10_spontan) as echte_zeit_ab_10_spontan, |
24 | AVG(echte_zeit_ab_11_spontan) as echte_zeit_ab_11_spontan, |
25 | AVG(echte_zeit_ab_12_spontan) as echte_zeit_ab_12_spontan, |
26 | AVG(echte_zeit_ab_13_spontan) as echte_zeit_ab_13_spontan, |
27 | AVG(echte_zeit_ab_14_spontan) as echte_zeit_ab_14_spontan, |
28 | AVG(echte_zeit_ab_15_spontan) as echte_zeit_ab_15_spontan, |
29 | AVG(echte_zeit_ab_16_spontan) as echte_zeit_ab_16_spontan, |
30 | AVG(echte_zeit_ab_17_spontan) as echte_zeit_ab_17_spontan, |
31 | AVG(echte_zeit_ab_18_spontan) as echte_zeit_ab_18_spontan, |
32 | AVG(echte_zeit_ab_19_spontan) as echte_zeit_ab_19_spontan, |
33 | AVG(echte_zeit_ab_20_spontan) as echte_zeit_ab_20_spontan, |
34 | AVG(echte_zeit_ab_21_spontan) as echte_zeit_ab_21_spontan, |
35 | AVG(echte_zeit_ab_22_spontan) as echte_zeit_ab_22_spontan, |
36 | AVG(echte_zeit_ab_23_spontan) as echte_zeit_ab_23_spontan, |
37 | AVG(zeit_ab_00_spontan) as zeit_ab_00_spontan, |
38 | AVG(zeit_ab_01_spontan) as zeit_ab_01_spontan, |
39 | AVG(zeit_ab_02_spontan) as zeit_ab_02_spontan, |
40 | AVG(zeit_ab_03_spontan) as zeit_ab_03_spontan, |
41 | AVG(zeit_ab_04_spontan) as zeit_ab_04_spontan, |
42 | AVG(zeit_ab_05_spontan) as zeit_ab_05_spontan, |
43 | AVG(zeit_ab_06_spontan) as zeit_ab_06_spontan, |
44 | AVG(zeit_ab_07_spontan) as zeit_ab_07_spontan, |
45 | AVG(zeit_ab_08_spontan) as zeit_ab_08_spontan, |
46 | AVG(zeit_ab_09_spontan) as zeit_ab_09_spontan, |
47 | AVG(zeit_ab_10_spontan) as zeit_ab_10_spontan, |
48 | AVG(zeit_ab_11_spontan) as zeit_ab_11_spontan, |
49 | AVG(zeit_ab_12_spontan) as zeit_ab_12_spontan, |
50 | AVG(zeit_ab_13_spontan) as zeit_ab_13_spontan, |
51 | AVG(zeit_ab_14_spontan) as zeit_ab_14_spontan, |
52 | AVG(zeit_ab_15_spontan) as zeit_ab_15_spontan, |
53 | AVG(zeit_ab_16_spontan) as zeit_ab_16_spontan, |
54 | AVG(zeit_ab_17_spontan) as zeit_ab_17_spontan, |
55 | AVG(zeit_ab_18_spontan) as zeit_ab_18_spontan, |
56 | AVG(zeit_ab_19_spontan) as zeit_ab_19_spontan, |
57 | AVG(zeit_ab_20_spontan) as zeit_ab_20_spontan, |
58 | AVG(zeit_ab_21_spontan) as zeit_ab_21_spontan, |
59 | AVG(zeit_ab_22_spontan) as zeit_ab_22_spontan, |
60 | AVG(zeit_ab_23_spontan) as zeit_ab_23_spontan, |
61 | AVG(wegezeit_ab_00_spontan) as wegezeit_ab_00_spontan, |
62 | AVG(wegezeit_ab_01_spontan) as wegezeit_ab_01_spontan, |
63 | AVG(wegezeit_ab_02_spontan) as wegezeit_ab_02_spontan, |
64 | AVG(wegezeit_ab_03_spontan) as wegezeit_ab_03_spontan, |
65 | AVG(wegezeit_ab_04_spontan) as wegezeit_ab_04_spontan, |
66 | AVG(wegezeit_ab_05_spontan) as wegezeit_ab_05_spontan, |
67 | AVG(wegezeit_ab_06_spontan) as wegezeit_ab_06_spontan, |
68 | AVG(wegezeit_ab_07_spontan) as wegezeit_ab_07_spontan, |
69 | AVG(wegezeit_ab_08_spontan) as wegezeit_ab_08_spontan, |
70 | AVG(wegezeit_ab_09_spontan) as wegezeit_ab_09_spontan, |
71 | AVG(wegezeit_ab_10_spontan) as wegezeit_ab_10_spontan, |
72 | AVG(wegezeit_ab_11_spontan) as wegezeit_ab_11_spontan, |
73 | AVG(wegezeit_ab_12_spontan) as wegezeit_ab_12_spontan, |
74 | AVG(wegezeit_ab_13_spontan) as wegezeit_ab_13_spontan, |
75 | AVG(wegezeit_ab_14_spontan) as wegezeit_ab_14_spontan, |
76 | AVG(wegezeit_ab_15_spontan) as wegezeit_ab_15_spontan, |
77 | AVG(wegezeit_ab_16_spontan) as wegezeit_ab_16_spontan, |
78 | AVG(wegezeit_ab_17_spontan) as wegezeit_ab_17_spontan, |
79 | AVG(wegezeit_ab_18_spontan) as wegezeit_ab_18_spontan, |
80 | AVG(wegezeit_ab_19_spontan) as wegezeit_ab_19_spontan, |
81 | AVG(wegezeit_ab_20_spontan) as wegezeit_ab_20_spontan, |
82 | AVG(wegezeit_ab_21_spontan) as wegezeit_ab_21_spontan, |
83 | AVG(wegezeit_ab_22_spontan) as wegezeit_ab_22_spontan, |
84 | AVG(wegezeit_ab_23_spontan) as wegezeit_ab_23_spontan, |
85 | MAX(wartende_ab_00_spontan) as wartende_ab_00_spontan, |
86 | MAX(wartende_ab_01_spontan) as wartende_ab_01_spontan, |
87 | MAX(wartende_ab_02_spontan) as wartende_ab_02_spontan, |
88 | MAX(wartende_ab_03_spontan) as wartende_ab_03_spontan, |
89 | MAX(wartende_ab_04_spontan) as wartende_ab_04_spontan, |
90 | MAX(wartende_ab_05_spontan) as wartende_ab_05_spontan, |
91 | MAX(wartende_ab_06_spontan) as wartende_ab_06_spontan, |
92 | MAX(wartende_ab_07_spontan) as wartende_ab_07_spontan, |
93 | MAX(wartende_ab_08_spontan) as wartende_ab_08_spontan, |
94 | MAX(wartende_ab_09_spontan) as wartende_ab_09_spontan, |
95 | MAX(wartende_ab_10_spontan) as wartende_ab_10_spontan, |
96 | MAX(wartende_ab_11_spontan) as wartende_ab_11_spontan, |
97 | MAX(wartende_ab_12_spontan) as wartende_ab_12_spontan, |
98 | MAX(wartende_ab_13_spontan) as wartende_ab_13_spontan, |
99 | MAX(wartende_ab_14_spontan) as wartende_ab_14_spontan, |
100 | MAX(wartende_ab_15_spontan) as wartende_ab_15_spontan, |
101 | MAX(wartende_ab_16_spontan) as wartende_ab_16_spontan, |
102 | MAX(wartende_ab_17_spontan) as wartende_ab_17_spontan, |
103 | MAX(wartende_ab_18_spontan) as wartende_ab_18_spontan, |
104 | MAX(wartende_ab_19_spontan) as wartende_ab_19_spontan, |
105 | MAX(wartende_ab_20_spontan) as wartende_ab_20_spontan, |
106 | MAX(wartende_ab_21_spontan) as wartende_ab_21_spontan, |
107 | MAX(wartende_ab_22_spontan) as wartende_ab_22_spontan, |
108 | MAX(wartende_ab_23_spontan) as wartende_ab_23_spontan, |
109 | AVG(echte_zeit_ab_00_termin) as echte_zeit_ab_00_termin, |
110 | AVG(echte_zeit_ab_01_termin) as echte_zeit_ab_01_termin, |
111 | AVG(echte_zeit_ab_02_termin) as echte_zeit_ab_02_termin, |
112 | AVG(echte_zeit_ab_03_termin) as echte_zeit_ab_03_termin, |
113 | AVG(echte_zeit_ab_04_termin) as echte_zeit_ab_04_termin, |
114 | AVG(echte_zeit_ab_05_termin) as echte_zeit_ab_05_termin, |
115 | AVG(echte_zeit_ab_06_termin) as echte_zeit_ab_06_termin, |
116 | AVG(echte_zeit_ab_07_termin) as echte_zeit_ab_07_termin, |
117 | AVG(echte_zeit_ab_08_termin) as echte_zeit_ab_08_termin, |
118 | AVG(echte_zeit_ab_09_termin) as echte_zeit_ab_09_termin, |
119 | AVG(echte_zeit_ab_10_termin) as echte_zeit_ab_10_termin, |
120 | AVG(echte_zeit_ab_11_termin) as echte_zeit_ab_11_termin, |
121 | AVG(echte_zeit_ab_12_termin) as echte_zeit_ab_12_termin, |
122 | AVG(echte_zeit_ab_13_termin) as echte_zeit_ab_13_termin, |
123 | AVG(echte_zeit_ab_14_termin) as echte_zeit_ab_14_termin, |
124 | AVG(echte_zeit_ab_15_termin) as echte_zeit_ab_15_termin, |
125 | AVG(echte_zeit_ab_16_termin) as echte_zeit_ab_16_termin, |
126 | AVG(echte_zeit_ab_17_termin) as echte_zeit_ab_17_termin, |
127 | AVG(echte_zeit_ab_18_termin) as echte_zeit_ab_18_termin, |
128 | AVG(echte_zeit_ab_19_termin) as echte_zeit_ab_19_termin, |
129 | AVG(echte_zeit_ab_20_termin) as echte_zeit_ab_20_termin, |
130 | AVG(echte_zeit_ab_21_termin) as echte_zeit_ab_21_termin, |
131 | AVG(echte_zeit_ab_22_termin) as echte_zeit_ab_22_termin, |
132 | AVG(echte_zeit_ab_23_termin) as echte_zeit_ab_23_termin, |
133 | AVG(zeit_ab_00_termin) as zeit_ab_00_termin, |
134 | AVG(zeit_ab_01_termin) as zeit_ab_01_termin, |
135 | AVG(zeit_ab_02_termin) as zeit_ab_02_termin, |
136 | AVG(zeit_ab_03_termin) as zeit_ab_03_termin, |
137 | AVG(zeit_ab_04_termin) as zeit_ab_04_termin, |
138 | AVG(zeit_ab_05_termin) as zeit_ab_05_termin, |
139 | AVG(zeit_ab_06_termin) as zeit_ab_06_termin, |
140 | AVG(zeit_ab_07_termin) as zeit_ab_07_termin, |
141 | AVG(zeit_ab_08_termin) as zeit_ab_08_termin, |
142 | AVG(zeit_ab_09_termin) as zeit_ab_09_termin, |
143 | AVG(zeit_ab_10_termin) as zeit_ab_10_termin, |
144 | AVG(zeit_ab_11_termin) as zeit_ab_11_termin, |
145 | AVG(zeit_ab_12_termin) as zeit_ab_12_termin, |
146 | AVG(zeit_ab_13_termin) as zeit_ab_13_termin, |
147 | AVG(zeit_ab_14_termin) as zeit_ab_14_termin, |
148 | AVG(zeit_ab_15_termin) as zeit_ab_15_termin, |
149 | AVG(zeit_ab_16_termin) as zeit_ab_16_termin, |
150 | AVG(zeit_ab_17_termin) as zeit_ab_17_termin, |
151 | AVG(zeit_ab_18_termin) as zeit_ab_18_termin, |
152 | AVG(zeit_ab_19_termin) as zeit_ab_19_termin, |
153 | AVG(zeit_ab_20_termin) as zeit_ab_20_termin, |
154 | AVG(zeit_ab_21_termin) as zeit_ab_21_termin, |
155 | AVG(zeit_ab_22_termin) as zeit_ab_22_termin, |
156 | AVG(zeit_ab_23_termin) as zeit_ab_23_termin, |
157 | AVG(wegezeit_ab_00_termin) as wegezeit_ab_00_termin, |
158 | AVG(wegezeit_ab_01_termin) as wegezeit_ab_01_termin, |
159 | AVG(wegezeit_ab_02_termin) as wegezeit_ab_02_termin, |
160 | AVG(wegezeit_ab_03_termin) as wegezeit_ab_03_termin, |
161 | AVG(wegezeit_ab_04_termin) as wegezeit_ab_04_termin, |
162 | AVG(wegezeit_ab_05_termin) as wegezeit_ab_05_termin, |
163 | AVG(wegezeit_ab_06_termin) as wegezeit_ab_06_termin, |
164 | AVG(wegezeit_ab_07_termin) as wegezeit_ab_07_termin, |
165 | AVG(wegezeit_ab_08_termin) as wegezeit_ab_08_termin, |
166 | AVG(wegezeit_ab_09_termin) as wegezeit_ab_09_termin, |
167 | AVG(wegezeit_ab_10_termin) as wegezeit_ab_10_termin, |
168 | AVG(wegezeit_ab_11_termin) as wegezeit_ab_11_termin, |
169 | AVG(wegezeit_ab_12_termin) as wegezeit_ab_12_termin, |
170 | AVG(wegezeit_ab_13_termin) as wegezeit_ab_13_termin, |
171 | AVG(wegezeit_ab_14_termin) as wegezeit_ab_14_termin, |
172 | AVG(wegezeit_ab_15_termin) as wegezeit_ab_15_termin, |
173 | AVG(wegezeit_ab_16_termin) as wegezeit_ab_16_termin, |
174 | AVG(wegezeit_ab_17_termin) as wegezeit_ab_17_termin, |
175 | AVG(wegezeit_ab_18_termin) as wegezeit_ab_18_termin, |
176 | AVG(wegezeit_ab_19_termin) as wegezeit_ab_19_termin, |
177 | AVG(wegezeit_ab_20_termin) as wegezeit_ab_20_termin, |
178 | AVG(wegezeit_ab_21_termin) as wegezeit_ab_21_termin, |
179 | AVG(wegezeit_ab_22_termin) as wegezeit_ab_22_termin, |
180 | AVG(wegezeit_ab_23_termin) as wegezeit_ab_23_termin, |
181 | MAX(wartende_ab_00_termin) as wartende_ab_00_termin, |
182 | MAX(wartende_ab_01_termin) as wartende_ab_01_termin, |
183 | MAX(wartende_ab_02_termin) as wartende_ab_02_termin, |
184 | MAX(wartende_ab_03_termin) as wartende_ab_03_termin, |
185 | MAX(wartende_ab_04_termin) as wartende_ab_04_termin, |
186 | MAX(wartende_ab_05_termin) as wartende_ab_05_termin, |
187 | MAX(wartende_ab_06_termin) as wartende_ab_06_termin, |
188 | MAX(wartende_ab_07_termin) as wartende_ab_07_termin, |
189 | MAX(wartende_ab_08_termin) as wartende_ab_08_termin, |
190 | MAX(wartende_ab_09_termin) as wartende_ab_09_termin, |
191 | MAX(wartende_ab_10_termin) as wartende_ab_10_termin, |
192 | MAX(wartende_ab_11_termin) as wartende_ab_11_termin, |
193 | MAX(wartende_ab_12_termin) as wartende_ab_12_termin, |
194 | MAX(wartende_ab_13_termin) as wartende_ab_13_termin, |
195 | MAX(wartende_ab_14_termin) as wartende_ab_14_termin, |
196 | MAX(wartende_ab_15_termin) as wartende_ab_15_termin, |
197 | MAX(wartende_ab_16_termin) as wartende_ab_16_termin, |
198 | MAX(wartende_ab_17_termin) as wartende_ab_17_termin, |
199 | MAX(wartende_ab_18_termin) as wartende_ab_18_termin, |
200 | MAX(wartende_ab_19_termin) as wartende_ab_19_termin, |
201 | MAX(wartende_ab_20_termin) as wartende_ab_20_termin, |
202 | MAX(wartende_ab_21_termin) as wartende_ab_21_termin, |
203 | MAX(wartende_ab_22_termin) as wartende_ab_22_termin, |
204 | MAX(wartende_ab_23_termin) as wartende_ab_23_termin |
205 | "; |
206 | |
207 | const QUERY_READ_DAY = " |
208 | SELECT |
209 | `datum` AS datum, |
210 | " . self::WAITING_VALUES . " |
211 | FROM " . self::TABLE . " |
212 | WHERE |
213 | `standortid` = :scopeid AND |
214 | `datum` BETWEEN :datestart AND :dateend |
215 | GROUP BY `datum` |
216 | ORDER BY `datum` ASC |
217 | "; |
218 | |
219 | //PLEASE REMEMBER THE REALY COOL DYNAMIC VERSION |
220 | const QUERY_READ_MONTH = " |
221 | SELECT |
222 | DATE_FORMAT(`datum`, '%Y-%m') as datum, |
223 | " . self::WAITING_VALUES . " |
224 | FROM " . self::TABLE . " |
225 | WHERE |
226 | `standortid` = :scopeid AND |
227 | `datum` BETWEEN :datestart AND :dateend |
228 | GROUP BY DATE_FORMAT(`datum`, '%Y-%m') |
229 | ORDER BY DATE_FORMAT(`datum`, '%Y-%m') ASC |
230 | "; |
231 | |
232 | const QUERY_READ_QUARTER = " |
233 | SELECT |
234 | CONCAT(YEAR(w.`datum`),'-',QUARTER(w.`datum`)) as datum, |
235 | " . self::WAITING_VALUES . " |
236 | FROM " . self::TABLE . " w |
237 | WHERE |
238 | w.`standortid` = :scopeid AND |
239 | w.`datum` BETWEEN :datestart AND :dateend |
240 | GROUP BY CONCAT(YEAR(w.`datum`),'-',QUARTER(w.`datum`)) |
241 | ORDER BY CONCAT(YEAR(w.`datum`),'-',QUARTER(w.`datum`)) ASC |
242 | "; |
243 | |
244 | const QUERY_SUBJECTS = ' |
245 | SELECT |
246 | scope.`StandortID` as subject, |
247 | periodstart, |
248 | periodend, |
249 | CONCAT(scope.`Bezeichnung`, " ", scope.`standortinfozeile`) AS description |
250 | FROM ' . Scope::TABLE . ' AS scope |
251 | INNER JOIN |
252 | ( |
253 | SELECT |
254 | w.standortid as scopeid, |
255 | MIN(w.`datum`) AS periodstart, |
256 | MAX(w.`datum`) AS periodend |
257 | FROM ' . self::TABLE . ' w |
258 | group by scopeid |
259 | ) |
260 | maxAndminDate ON maxAndminDate.`scopeid` = scope.`StandortID` |
261 | GROUP BY scope.`StandortID` |
262 | ORDER BY scope.`StandortID` ASC, periodstart DESC |
263 | '; |
264 | |
265 | const QUERY_PERIODLIST_DAY = ' |
266 | SELECT |
267 | `datum` |
268 | FROM ' . self::TABLE . ' AS w |
269 | WHERE `standortid` = :scopeid |
270 | ORDER BY `datum` ASC |
271 | '; |
272 | |
273 | const QUERY_PERIODLIST_MONTH = ' |
274 | SELECT DISTINCT DATE_FORMAT(`datum`,"%Y-%m") AS date |
275 | FROM ' . self::TABLE . ' AS w |
276 | WHERE `standortid` = :scopeid |
277 | ORDER BY `datum` ASC |
278 | '; |
279 | |
280 | const QUERY_CREATE = ' |
281 | INSERT INTO ' . self::TABLE . ' SET |
282 | `standortid` = :scopeid, |
283 | `datum` = :date |
284 | '; |
285 | |
286 | /** |
287 | * For backward compatibility on db table optimization, we have to convert the field name |
288 | * Drawback: No prepared statement using the date |
289 | */ |
290 | public static function getQuerySelectByDateTime(\DateTimeInterface $date, bool $withAppointment = false) |
291 | { |
292 | $suffix = $withAppointment ? 'termin' : 'spontan'; |
293 | |
294 | $query = sprintf( |
295 | "SELECT |
296 | `zeit_ab_%s_%s` AS waitingcalculated, |
297 | `wartende_ab_%s_%s` AS waitingcount, |
298 | `echte_zeit_ab_%s_%s` AS waitingtime, |
299 | `wegezeit_ab_%s_%s` AS waytime |
300 | FROM %s |
301 | WHERE `standortid` = :scopeid |
302 | AND `datum` = :date |
303 | AND :hour IS NOT NULL |
304 | ", |
305 | $date->format('H'), |
306 | $suffix, |
307 | $date->format('H'), |
308 | $suffix, |
309 | $date->format('H'), |
310 | $suffix, |
311 | $date->format('H'), |
312 | $suffix, |
313 | self::TABLE |
314 | ); |
315 | return $query; |
316 | } |
317 | |
318 | /** |
319 | * For backward compatibility on db table optimization, we have to convert the field name |
320 | * Drawback: No prepared statement using the date |
321 | */ |
322 | public static function getQueryUpdateByDateTime(\DateTimeInterface $date, bool $withAppointment = false) |
323 | { |
324 | $suffix = $withAppointment ? 'termin' : 'spontan'; |
325 | |
326 | $query = sprintf( |
327 | "UPDATE %s |
328 | SET |
329 | `zeit_ab_%s_%s`= :waitingcalculated, |
330 | `wartende_ab_%s_%s` = :waitingcount, |
331 | `echte_zeit_ab_%s_%s` = :waitingtime, |
332 | `wegezeit_ab_%s_%s` = :waytime |
333 | WHERE `standortid` = :scopeid |
334 | AND `datum` = :date |
335 | AND :hour IS NOT NULL |
336 | ", |
337 | self::TABLE, |
338 | $date->format('H'), |
339 | $suffix, |
340 | $date->format('H'), |
341 | $suffix, |
342 | $date->format('H'), |
343 | $suffix, |
344 | $date->format('H'), |
345 | $suffix |
346 | ); |
347 | return $query; |
348 | } |
349 | } |