Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
ExchangeRequestorganisation
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
1<?php
2
3namespace BO\Zmsdb\Query;
4
5class ExchangeRequestorganisation 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.OrganisationsID 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.organisationsid,
32                COUNT(s.anliegenid) as requestscount,
33                AVG(s.bearbeitungszeit) as processingtime,
34                s.`datum`
35            FROM ' . self::TABLE . ' s
36            WHERE s.organisationsid = :organisationid AND s.`datum` BETWEEN :datestart AND :dateend
37            GROUP BY s.`datum`, s.anliegenid
38        ) as statistikJoin ON statistikJoin.`organisationsid` = o.OrganisationsID
39        LEFT JOIN ' . self::REQUESTTABLE . ' r ON r.id = statistikJoin.anliegenid
40    WHERE o.`OrganisationsID` = :organisationid 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
46    const QUERY_SUBJECTS = '
47      SELECT
48          o.`OrganisationsID` as subject,
49          periodstart,
50          periodend,
51          o.`Organisationsname` AS description
52      FROM ' . Organisation::TABLE . ' AS o
53          INNER JOIN
54            (
55              SELECT
56                s.`organisationsid` as organisationid,
57                MIN(s.`datum`) AS periodstart,
58                MAX(s.`datum`) AS periodend
59              FROM ' . self::TABLE . ' s
60              group by organisationid
61            )
62          maxAndminDate ON maxAndminDate.`organisationid` = o.`OrganisationsID`
63      GROUP BY o.`OrganisationsID`
64      ORDER BY o.`OrganisationsID` ASC
65    ';
66
67    const QUERY_PERIODLIST_MONTH = '
68        SELECT date
69        FROM ' . Organisation::TABLE . ' AS o
70            INNER JOIN (
71              SELECT
72                organisationsid,
73                DATE_FORMAT(`datum`,"%Y-%m") AS date
74              FROM ' . self::TABLE . '
75            ) s ON s.organisationsid = o.OrganisationsID
76        WHERE s.`organisationsid` = :organisationid
77        GROUP BY date
78        ORDER BY date ASC
79    ';
80}