Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
n/a
0 / 0
n/a
0 / 0
CRAP
n/a
0 / 0
ExchangeRequestdepartment
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 ExchangeRequestdepartment 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        d.BehoerdenID as departmentid,
19        statistikJoin.`organisationsid` as organisationid,
20        DATE_FORMAT(statistikJoin.`datum`, :groupby) as date,
21        (
22            CASE
23              WHEN statistikJoin.anliegenid = -1 THEN \'' . Exchange::REQUEST_STAT_NAME_UNCATEGORIZED . '\'
24              WHEN statistikJoin.anliegenid = 0 THEN \'' . Exchange::REQUEST_STAT_NAME_NONEXISTENT . '\'
25              ELSE r.name
26            END
27        ) as name,
28        SUM(statistikJoin.requestscount) as requestscount,
29        AVG(statistikJoin.processingtime) as processingtime
30    FROM ' . Department::TABLE . ' d
31        INNER JOIN (
32            SELECT
33                s.anliegenid,
34                s.behoerdenid,
35                s.organisationsid,
36                COUNT(s.anliegenid) as requestscount,
37                AVG(s.processing_time) as processingtime,
38                s.`datum`
39            FROM ' . self::TABLE . ' s
40            WHERE s.behoerdenid = :departmentid AND s.`datum` BETWEEN :datestart AND :dateend
41            GROUP BY s.`datum`, s.anliegenid
42        ) as statistikJoin ON statistikJoin.`behoerdenid` = d.BehoerdenID
43        LEFT JOIN ' . self::REQUESTTABLE . ' r ON r.id = statistikJoin.anliegenid
44    WHERE d.`behoerdenid` = :departmentid AND statistikJoin.`datum` BETWEEN :datestart AND :dateend
45    GROUP BY DATE_FORMAT(statistikJoin.`datum`, :groupby), name, statistikJoin.anliegenid
46    ORDER BY r.name, statistikJoin.anliegenid
47    ';
48
49    const QUERY_SUBJECTS = '
50      SELECT
51          d.`BehoerdenID` as subject,
52          periodstart,
53          periodend,
54          o.`Organisationsname` AS organisationname,
55          d.`Name` AS description
56      FROM ' . Department::TABLE . ' AS d
57          INNER JOIN
58            (
59              SELECT
60                s.`behoerdenid` as departmentid,
61                MIN(s.`datum`) AS periodstart,
62                MAX(s.`datum`) AS periodend
63              FROM ' . self::TABLE . ' s
64              group by departmentid
65            )
66          maxAndminDate ON maxAndminDate.`departmentid` = d.`BehoerdenID`
67          LEFT JOIN ' . Organisation::TABLE . ' AS o ON d.`OrganisationsID` = o.`OrganisationsID`
68      GROUP BY d.`BehoerdenID`
69      ORDER BY d.`BehoerdenID` ASC
70    ';
71
72    const QUERY_PERIODLIST_MONTH = '
73        SELECT date
74        FROM ' . Department::TABLE . ' AS d
75            INNER JOIN (
76              SELECT
77                behoerdenid,
78                DATE_FORMAT(`datum`,"%Y-%m") AS date
79              FROM ' . self::TABLE . '
80            ) s ON s.behoerdenid = d.BehoerdenID
81        WHERE d.`BehoerdenID` = :departmentid
82        GROUP BY date
83        ORDER BY date ASC
84    ';
85}