Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
67 / 67
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
Queue
100.00% covered (success)
100.00%
67 / 67
100.00% covered (success)
100.00%
4 / 4
9
100.00% covered (success)
100.00%
1 / 1
 getEntityMapping
100.00% covered (success)
100.00%
36 / 36
100.00% covered (success)
100.00%
1 / 1
1
 addConditionAssigned
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 postProcess
100.00% covered (success)
100.00%
15 / 15
100.00% covered (success)
100.00%
1 / 1
6
 addRequiredJoins
100.00% covered (success)
100.00%
12 / 12
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace BO\Zmsdb\Query;
4
5/**
6*
7* @SuppressWarnings(Methods)
8* @SuppressWarnings(Complexity)
9 */
10class 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}