Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
66 / 66 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
1 / 1 |
Queue | |
100.00% |
66 / 66 |
|
100.00% |
4 / 4 |
9 | |
100.00% |
1 / 1 |
getEntityMapping | |
100.00% |
35 / 35 |
|
100.00% |
1 / 1 |
1 | |||
addConditionAssigned | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
1 | |||
postProcess | |
100.00% |
15 / 15 |
|
100.00% |
1 / 1 |
6 | |||
addRequiredJoins | |
100.00% |
12 / 12 |
|
100.00% |
1 / 1 |
1 |
1 | <?php |
2 | |
3 | namespace BO\Zmsdb\Query; |
4 | |
5 | /** |
6 | * |
7 | * @SuppressWarnings(Methods) |
8 | * @SuppressWarnings(Complexity) |
9 | */ |
10 | class Queue extends Process implements MappingInterface |
11 | { |
12 | const ALIAS = 'process'; |
13 | |
14 | public function getEntityMapping() |
15 | { |
16 | $status_expression = self::expression( |
17 | 'CASE |
18 | WHEN process.Name = "(abgesagt)" |
19 | THEN "deleted" |
20 | WHEN process.Name = "dereferenced" AND process.StandortID = 0 |
21 | THEN "blocked" |
22 | WHEN process.vorlaeufigeBuchung = 1 AND process.bestaetigt = 0 |
23 | THEN "reserved" |
24 | WHEN process.nicht_erschienen != 0 |
25 | THEN "missed" |
26 | WHEN process.Abholer != 0 AND process.AbholortID != 0 AND process.NutzerID = 0 |
27 | THEN "pending" |
28 | WHEN process.AbholortID != 0 AND process.NutzerID != 0 |
29 | THEN "pickup" |
30 | WHEN process.AbholortID = 0 AND process.aufruferfolgreich != 0 AND process.NutzerID != 0 |
31 | THEN "processing" |
32 | WHEN process.aufrufzeit != "00:00:00" AND process.NutzerID != 0 AND process.AbholortID = 0 |
33 | THEN "called" |
34 | WHEN process.wsm_aufnahmezeit != "00:00:00" |
35 | THEN "queued" |
36 | WHEN process.vorlaeufigeBuchung = 0 AND process.bestaetigt = 0 AND IPTimeStamp |
37 | THEN "preconfirmed" |
38 | WHEN process.vorlaeufigeBuchung = 0 AND process.bestaetigt = 1 AND IPTimeStamp |
39 | THEN "confirmed" |
40 | ELSE "free" |
41 | END' |
42 | ); |
43 | return [ |
44 | //'id' => 'process.BuergerID', |
45 | 'status' => $status_expression, |
46 | 'arrivalTime' => self::expression( |
47 | 'CONCAT( |
48 | `process`.`Datum`, |
49 | " ", |
50 | IF(`process`.`Uhrzeit`, `process`.`Uhrzeit`, `process`.`wsm_aufnahmezeit`) |
51 | )' |
52 | ), |
53 | 'callCount' => 'process.AnzahlAufrufe', |
54 | 'callTime' => self::expression( |
55 | 'CONCAT( |
56 | `process`.`Datum`, |
57 | " ", |
58 | `process`.`aufrufzeit` |
59 | )' |
60 | ), |
61 | 'lastCallTime' => self::expression( |
62 | 'CONCAT( |
63 | `process`.`Datum`, |
64 | " ", |
65 | `process`.`Timestamp` |
66 | )' |
67 | ), |
68 | 'number' => self::expression( |
69 | 'IF(`process`.`wartenummer`, |
70 | `process`.`wartenummer`, |
71 | `process`.`BuergerID` |
72 | )' |
73 | ), |
74 | 'destination' => self::expression( |
75 | 'IF(`process`.`AbholortID`, |
76 | `processscope`.`ausgabeschaltername`, |
77 | `processuser`.`Arbeitsplatznr` |
78 | )' |
79 | ), |
80 | 'destinationHint' => 'processuser.aufrufzusatz', |
81 | 'waitingTime' => 'process.wartezeit', |
82 | 'wayTime' => 'process.wegezeit', |
83 | 'withAppointment' => self::expression( |
84 | 'IF(`process`.`wartenummer`, |
85 | "0", |
86 | "1" |
87 | )' |
88 | ), |
89 | ]; |
90 | } |
91 | |
92 | public function addConditionAssigned() |
93 | { |
94 | $this->query->where(function (\Solution10\SQL\ConditionBuilder $query) { |
95 | $query->andWith(self::expression('process.istFolgeterminvon IS NULL OR process.istFolgeterminvon'), '=', 0); |
96 | }); |
97 | return $this; |
98 | } |
99 | |
100 | |
101 | public function postProcess($data) |
102 | { |
103 | if (false === strpos($data[$this->getPrefixed("callTime")], '00:00:00')) { |
104 | $data[$this->getPrefixed("callTime")] = strtotime($data[$this->getPrefixed("callTime")]); |
105 | } else { |
106 | $data[$this->getPrefixed("callTime")] = 0; |
107 | } |
108 | if (false === strpos($data[$this->getPrefixed("lastCallTime")], '00:00:00')) { |
109 | $data[$this->getPrefixed("lastCallTime")] = strtotime($data[$this->getPrefixed("lastCallTime")]); |
110 | } else { |
111 | $data[$this->getPrefixed("lastCallTime")] = 0; |
112 | } |
113 | if (!$data[$this->getPrefixed("waitingTime")]) { |
114 | $data[$this->getPrefixed("waitingTime")] = 0; |
115 | }; |
116 | if (!$data[$this->getPrefixed("wayTime")]) { |
117 | $data[$this->getPrefixed("wayTime")] = 0; |
118 | }; |
119 | $data[$this->getPrefixed("arrivalTime")] = |
120 | strtotime($data[$this->getPrefixed("arrivalTime")]); |
121 | $data[$this->getPrefixed("withAppointment")] = |
122 | ($data[$this->getPrefixed("withAppointment")]) ? true : false; |
123 | return $data; |
124 | } |
125 | |
126 | protected function addRequiredJoins() |
127 | { |
128 | $this->leftJoin( |
129 | new Alias(Useraccount::TABLE, 'processuser'), |
130 | 'process.NutzerID', |
131 | '=', |
132 | 'processuser.NutzerID' |
133 | ); |
134 | $this->leftJoin( |
135 | new Alias(Scope::TABLE, 'processscope'), |
136 | 'process.StandortID', |
137 | '=', |
138 | 'processscope.StandortID' |
139 | ); |
140 | } |
141 | } |