Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
67 / 67 |
|
100.00% |
4 / 4 |
CRAP | |
100.00% |
1 / 1 |
Queue | |
100.00% |
67 / 67 |
|
100.00% |
4 / 4 |
9 | |
100.00% |
1 / 1 |
getEntityMapping | |
100.00% |
36 / 36 |
|
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 | 'priority' => 'process.priority', |
55 | 'callTime' => self::expression( |
56 | 'CONCAT( |
57 | `process`.`Datum`, |
58 | " ", |
59 | `process`.`aufrufzeit` |
60 | )' |
61 | ), |
62 | 'lastCallTime' => self::expression( |
63 | 'CONCAT( |
64 | `process`.`Datum`, |
65 | " ", |
66 | `process`.`Timestamp` |
67 | )' |
68 | ), |
69 | 'number' => self::expression( |
70 | 'IF(`process`.`wartenummer`, |
71 | `process`.`wartenummer`, |
72 | `process`.`BuergerID` |
73 | )' |
74 | ), |
75 | 'destination' => self::expression( |
76 | 'IF(`process`.`AbholortID`, |
77 | `processscope`.`ausgabeschaltername`, |
78 | `processuser`.`Arbeitsplatznr` |
79 | )' |
80 | ), |
81 | 'destinationHint' => 'processuser.aufrufzusatz', |
82 | 'waitingTime' => 'process.wartezeit', |
83 | 'wayTime' => 'process.wegezeit', |
84 | 'withAppointment' => self::expression( |
85 | 'IF(`process`.`wartenummer`, |
86 | "0", |
87 | "1" |
88 | )' |
89 | ), |
90 | ]; |
91 | } |
92 | |
93 | public function addConditionAssigned() |
94 | { |
95 | $this->query->where(function (\BO\Zmsdb\Query\Builder\ConditionBuilder $query) { |
96 | $query->andWith(self::expression('process.istFolgeterminvon IS NULL OR process.istFolgeterminvon'), '=', 0); |
97 | }); |
98 | return $this; |
99 | } |
100 | |
101 | |
102 | public function postProcess($data) |
103 | { |
104 | if (false === strpos($data[$this->getPrefixed("callTime")], '00:00:00')) { |
105 | $data[$this->getPrefixed("callTime")] = strtotime($data[$this->getPrefixed("callTime")]); |
106 | } else { |
107 | $data[$this->getPrefixed("callTime")] = 0; |
108 | } |
109 | if (false === strpos($data[$this->getPrefixed("lastCallTime")], '00:00:00')) { |
110 | $data[$this->getPrefixed("lastCallTime")] = strtotime($data[$this->getPrefixed("lastCallTime")]); |
111 | } else { |
112 | $data[$this->getPrefixed("lastCallTime")] = 0; |
113 | } |
114 | if (!$data[$this->getPrefixed("waitingTime")]) { |
115 | $data[$this->getPrefixed("waitingTime")] = 0; |
116 | }; |
117 | if (!$data[$this->getPrefixed("wayTime")]) { |
118 | $data[$this->getPrefixed("wayTime")] = 0; |
119 | }; |
120 | $data[$this->getPrefixed("arrivalTime")] = |
121 | strtotime($data[$this->getPrefixed("arrivalTime")]); |
122 | $data[$this->getPrefixed("withAppointment")] = |
123 | ($data[$this->getPrefixed("withAppointment")]) ? true : false; |
124 | return $data; |
125 | } |
126 | |
127 | protected function addRequiredJoins() |
128 | { |
129 | $this->leftJoin( |
130 | new Alias(Useraccount::TABLE, 'processuser'), |
131 | 'process.NutzerID', |
132 | '=', |
133 | 'processuser.NutzerID' |
134 | ); |
135 | $this->leftJoin( |
136 | new Alias(Scope::TABLE, 'processscope'), |
137 | 'process.StandortID', |
138 | '=', |
139 | 'processscope.StandortID' |
140 | ); |
141 | } |
142 | } |