Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
66 / 66
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
Queue
100.00% covered (success)
100.00%
66 / 66
100.00% covered (success)
100.00%
4 / 4
9
100.00% covered (success)
100.00%
1 / 1
 getEntityMapping
100.00% covered (success)
100.00%
35 / 35
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            '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}