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
5use BO\Zmsentities\Exchange;
6
7class ExchangeRequestorganisation extends Base
8{
9    /**
10     * @var String TABLE mysql table reference
11     */
12    const TABLE = 'statistik';
13
14    const REQUESTTABLE = 'request';
15
16    const QUERY_READ_REPORT = '
17    SELECT
18        o.OrganisationsID as subjectid,
19        DATE_FORMAT(statistikJoin.`datum`, :groupby) as date,
20        (
21            CASE
22              WHEN statistikJoin.anliegenid = -1 THEN \'' . Exchange::REQUEST_STAT_NAME_UNCATEGORIZED . '\'
23              WHEN statistikJoin.anliegenid = 0 THEN \'' . Exchange::REQUEST_STAT_NAME_NONEXISTENT . '\'
24              ELSE r.name
25            END
26        ) as name,
27        SUM(statistikJoin.requestscount) as requestscount,
28        AVG(statistikJoin.processingtime) as processingtime
29    FROM ' . Organisation::TABLE . ' o
30        INNER JOIN (
31            SELECT
32                s.anliegenid,
33                s.organisationsid,
34                COUNT(s.anliegenid) as requestscount,
35                AVG(s.processing_time) as processingtime,
36                s.`datum`
37            FROM ' . self::TABLE . ' s
38            WHERE s.organisationsid = :organisationid AND s.`datum` BETWEEN :datestart AND :dateend
39            GROUP BY s.`datum`, s.anliegenid
40        ) as statistikJoin ON statistikJoin.`organisationsid` = o.OrganisationsID
41        LEFT JOIN ' . self::REQUESTTABLE . ' r ON r.id = statistikJoin.anliegenid
42    WHERE o.`OrganisationsID` = :organisationid AND statistikJoin.`datum` BETWEEN :datestart AND :dateend
43    GROUP BY DATE_FORMAT(statistikJoin.`datum`, :groupby), name, statistikJoin.anliegenid
44    ORDER BY r.name, statistikJoin.anliegenid
45    ';
46
47
48    const QUERY_SUBJECTS = '
49      SELECT
50          o.`OrganisationsID` as subject,
51          periodstart,
52          periodend,
53          o.`Organisationsname` AS description
54      FROM ' . Organisation::TABLE . ' AS o
55          INNER JOIN
56            (
57              SELECT
58                s.`organisationsid` as organisationid,
59                MIN(s.`datum`) AS periodstart,
60                MAX(s.`datum`) AS periodend
61              FROM ' . self::TABLE . ' s
62              group by organisationid
63            )
64          maxAndminDate ON maxAndminDate.`organisationid` = o.`OrganisationsID`
65      GROUP BY o.`OrganisationsID`
66      ORDER BY o.`OrganisationsID` ASC
67    ';
68
69    const QUERY_PERIODLIST_MONTH = '
70        SELECT date
71        FROM ' . Organisation::TABLE . ' AS o
72            INNER JOIN (
73              SELECT
74                organisationsid,
75                DATE_FORMAT(`datum`,"%Y-%m") AS date
76              FROM ' . self::TABLE . '
77            ) s ON s.organisationsid = o.OrganisationsID
78        WHERE s.`organisationsid` = :organisationid
79        GROUP BY date
80        ORDER BY date ASC
81    ';
82}