Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
ExchangeRequestowner
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
1<?php
2
3namespace BO\Zmsdb\Query;
4
5class ExchangeRequestowner extends Base
6{
7    /**
8     * @var String TABLE mysql table reference
9     */
10    const TABLE = 'statistik';
11
12    const REQUESTTABLE = 'request';
13
14    const QUERY_READ_REPORT = '
15    SELECT
16        o.KundenID as subjectid,
17        DATE_FORMAT(statistikJoin.`datum`, :groupby) as date,
18        (
19            CASE
20              WHEN statistikJoin.anliegenid = -1 THEN "Dienstleistung wurde nicht erfasst"
21              WHEN statistikJoin.anliegenid = 0 THEN "Dienstleistung konnte nicht erbracht werden"
22              ELSE r.name
23            END
24        ) as name,
25        SUM(statistikJoin.requestscount) as requestscount,
26        AVG(statistikJoin.processingtime) as processingtime
27    FROM ' . Organisation::TABLE . ' o
28        INNER JOIN (
29            SELECT
30                s.anliegenid,
31                s.kundenid,
32                COUNT(s.anliegenid) as requestscount,
33                AVG(s.bearbeitungszeit) as processingtime,
34                s.`datum`
35            FROM ' . self::TABLE . ' s
36            WHERE s.kundenid = :ownerid AND s.`datum` BETWEEN :datestart AND :dateend
37            GROUP BY s.`datum`, s.anliegenid
38        ) as statistikJoin ON statistikJoin.`kundenid` = o.KundenID
39        LEFT JOIN ' . self::REQUESTTABLE . ' r ON r.id = statistikJoin.anliegenid
40    WHERE o.`KundenID` = :ownerid AND statistikJoin.`datum` BETWEEN :datestart AND :dateend
41    GROUP BY DATE_FORMAT(statistikJoin.`datum`, :groupby), name, statistikJoin.anliegenid
42    ORDER BY r.name, statistikJoin.anliegenid
43    ';
44
45    const QUERY_SUBJECTS = '
46      SELECT
47          o.`KundenID` as subject,
48          periodstart,
49          periodend,
50          o.`Organisationsname` AS description
51      FROM ' . Organisation::TABLE . ' AS o
52          INNER JOIN
53            (
54              SELECT
55                s.`kundenid` as ownerid,
56                MIN(s.`datum`) AS periodstart,
57                MAX(s.`datum`) AS periodend
58              FROM ' . self::TABLE . ' s
59              group by ownerid
60            )
61          maxAndminDate ON maxAndminDate.`ownerid` = o.`KundenID`
62      GROUP BY o.`KundenID`
63      ORDER BY o.`KundenID` ASC
64    ';
65
66    const QUERY_PERIODLIST_MONTH = '
67        SELECT date
68        FROM ' . Organisation::TABLE . ' AS o
69            INNER JOIN (
70              SELECT
71                kundenid,
72                DATE_FORMAT(`datum`,"%Y-%m") AS date
73              FROM ' . self::TABLE . '
74            ) s ON s.kundenid = o.KundenID
75        WHERE s.`kundenid` = :ownerid
76        GROUP BY date
77        ORDER BY date ASC
78    ';
79}