Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
121 / 121
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
ExchangeAvailabilityreview
100.00% covered (success)
100.00%
121 / 121
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 readEntity
100.00% covered (success)
100.00%
121 / 121
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace BO\Zmsdb;
4
5use BO\Zmsentities\Exchange;
6
7class ExchangeAvailabilityreview extends ExchangeSimpleQuery
8{
9    /**
10     * @SuppressWarnings(Length)
11     */
12    public function readEntity()
13    {
14        $entity = new Exchange();
15        $entity['title'] = "Review Öffnungszeiten";
16        $entity->addDictionaryEntry(
17            'Organisationsname',
18            'string',
19            'Name der Organisation'
20        );
21        $entity->addDictionaryEntry(
22            'Standortname',
23            'string',
24            'Name des Standorts inkl. Kürzel'
25        );
26        $entity->addDictionaryEntry(
27            'StandortID',
28            'string',
29            'ID of a scope',
30            'scope.id'
31        );
32        $entity->addDictionaryEntry(
33            'Startdatum',
34            'string',
35            'Beginn der Gültigkeit der Öffnungszeit'
36        );
37        $entity->addDictionaryEntry(
38            'Endedatum',
39            'string',
40            'Ende der Gültigkeit der Öffnungszeit'
41        );
42        $entity->addDictionaryEntry(
43            'Anfang',
44            'string',
45            'Tageszeit zum Anfang der Öffnungszeit'
46        );
47        $entity->addDictionaryEntry(
48            'Ende',
49            'string',
50            'Tageszeit zum Ende der Öffnungszeit'
51        );
52        $entity->addDictionaryEntry(
53            'jedexteWoche',
54            'string',
55            'Öffnungszeit findet nur jede x. Woche im Monat statt'
56        );
57        $entity->addDictionaryEntry(
58            'allexWochen',
59            'string',
60            'Öffnungszeit finden nur alle x Wochen statt, Referenz ist der Montag in der Woche vom Startdatum'
61        );
62        $entity->addDictionaryEntry(
63            'montag',
64            'number',
65            'Ein Wert größer als 0 bedeutet, dass die Öffnungszeit an diesem Wochentag geöffnet hat'
66        );
67        $entity->addDictionaryEntry(
68            'dienstag',
69            'number',
70            'Ein Wert größer als 0 bedeutet, dass die Öffnungszeit an diesem Wochentag geöffnet hat'
71        );
72        $entity->addDictionaryEntry(
73            'mittwoch',
74            'number',
75            'Ein Wert größer als 0 bedeutet, dass die Öffnungszeit an diesem Wochentag geöffnet hat'
76        );
77        $entity->addDictionaryEntry(
78            'donnerstag',
79            'number',
80            'Ein Wert größer als 0 bedeutet, dass die Öffnungszeit an diesem Wochentag geöffnet hat'
81        );
82        $entity->addDictionaryEntry(
83            'freitag',
84            'number',
85            'Ein Wert größer als 0 bedeutet, dass die Öffnungszeit an diesem Wochentag geöffnet hat'
86        );
87        $entity->addDictionaryEntry(
88            'samstag',
89            'number',
90            'Ein Wert größer als 0 bedeutet, dass die Öffnungszeit an diesem Wochentag geöffnet hat'
91        );
92        $entity->addDictionaryEntry(
93            'sonntag',
94            'number',
95            'Ein Wert größer als 0 bedeutet, dass die Öffnungszeit an diesem Wochentag geöffnet hat'
96        );
97        $entity->addDictionaryEntry(
98            'Timeslot',
99            'number',
100            'Anzahl der Minuten, die ein Zeitslot einnimmt'
101        );
102        $entity->addDictionaryEntry(
103            'Arbpltz',
104            'number',
105            'Anzahl der Terminarbeitsplätze'
106        );
107        $entity->addDictionaryEntry(
108            'minusCall',
109            'number',
110            'Anzahl der Terminarbeitsplätze, um die für Callcenter das Angebot reduziert wird'
111        );
112        $entity->addDictionaryEntry(
113            'minusOnline',
114            'number',
115            'Anzahl der Terminarbeitsplätze, um die für die Internetbuchung das Angebot reduziert wird'
116        );
117        $entity->addDictionaryEntry(
118            'mehrfach',
119            'number',
120            'Ein Wert größer als 0 bedeutet, dass für einen Termin mehr als ein Zeitslot verwendet werden darf'
121        );
122        $entity->addDictionaryEntry(
123            'buchVon',
124            'number',
125            'Anzahl der Tage, die mindestens im voraus gebucht werden muss'
126        );
127        $entity->addDictionaryEntry(
128            'buchBis',
129            'string',
130            'Anzahl der Tage, die man maximal im voraus buchen kann'
131        );
132
133        //$entity['visualization']['xlabel'] = ["StandortID"];
134        //$entity['visualization']['ylabel'] = ["buchVon", "buchBis"];
135
136
137        $sql = 'SELECT 
138                    organisation.Organisationsname,
139                    CONCAT(standort.Bezeichnung,
140                            " ",
141                            standort.standortkuerzel) Standortname,
142                    standort.StandortID,
143                    oeffnungszeit.Startdatum,
144                    oeffnungszeit.Endedatum,
145                    oeffnungszeit.Terminanfangszeit Anfang,
146                    oeffnungszeit.Terminendzeit Ende,
147                    oeffnungszeit.jedexteWoche,
148                    oeffnungszeit.allexWochen,
149                    Wochentag & 2 montag,
150                    Wochentag & 4 dienstag,
151                    Wochentag & 8 mittwoch,
152                    Wochentag & 16 donnerstag,
153                    Wochentag & 32 freitag,
154                    Wochentag & 64 samstag,
155                    Wochentag & 1 sonntag,
156                    oeffnungszeit.Timeslot,
157                    oeffnungszeit.Anzahlterminarbeitsplaetze Arbpltz,
158                    oeffnungszeit.reduktionTermineCallcenter minusCall,
159                    oeffnungszeit.reduktionTermineImInternet minusOnline,
160                    oeffnungszeit.erlaubemehrfachslots mehrfach,
161                    IF(oeffnungszeit.`Offen_ab`,
162                        oeffnungszeit.`Offen_ab`,
163                        standort.`Termine_ab`) buchVon,
164                    IF(oeffnungszeit.`Offen_bis`,
165                        oeffnungszeit.`Offen_bis`,
166                        standort.`Termine_bis`) buchBis
167                FROM
168                    oeffnungszeit
169                        LEFT JOIN
170                    standort ON oeffnungszeit.StandortID = standort.StandortID
171                        LEFT JOIN
172                    behoerde ON standort.BehoerdenID = behoerde.BehoerdenID
173                        LEFT JOIN
174                    organisation ON behoerde.OrganisationsID = organisation.OrganisationsID
175                WHERE
176                    oeffnungszeit.Endedatum >= NOW()
177                        AND behoerde.Name = "Bürgeramt"
178                ORDER BY organisation.Organisationsname ASC,
179                    Standortname ASC,
180                    oeffnungszeit.Wochentag ASC,
181                    oeffnungszeit.Startdatum ASC,
182                    oeffnungszeit.Terminanfangszeit ASC;
183        ';
184        return $this->fetchDataSet($entity, $sql);
185    }
186}