Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
116 / 116
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
ExchangeAvailabilityreview
100.00% covered (success)
100.00%
116 / 116
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 readEntity
100.00% covered (success)
100.00%
116 / 116
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            'minusOnline',
109            'number',
110            'Anzahl der Terminarbeitsplätze, um die für die Internetbuchung das Angebot reduziert wird'
111        );
112        $entity->addDictionaryEntry(
113            'mehrfach',
114            'number',
115            'Ein Wert größer als 0 bedeutet, dass für einen Termin mehr als ein Zeitslot verwendet werden darf'
116        );
117        $entity->addDictionaryEntry(
118            'buchVon',
119            'number',
120            'Anzahl der Tage, die mindestens im voraus gebucht werden muss'
121        );
122        $entity->addDictionaryEntry(
123            'buchBis',
124            'string',
125            'Anzahl der Tage, die man maximal im voraus buchen kann'
126        );
127
128        //$entity['visualization']['xlabel'] = ["StandortID"];
129        //$entity['visualization']['ylabel'] = ["buchVon", "buchBis"];
130
131
132        $sql = 'SELECT 
133                    organisation.Organisationsname,
134                    CONCAT(standort.Bezeichnung,
135                            " ",
136                            standort.standortkuerzel) Standortname,
137                    standort.StandortID,
138                    oeffnungszeit.Startdatum,
139                    oeffnungszeit.Endedatum,
140                    oeffnungszeit.Terminanfangszeit Anfang,
141                    oeffnungszeit.Terminendzeit Ende,
142                    oeffnungszeit.jedexteWoche,
143                    oeffnungszeit.allexWochen,
144                    Wochentag & 2 montag,
145                    Wochentag & 4 dienstag,
146                    Wochentag & 8 mittwoch,
147                    Wochentag & 16 donnerstag,
148                    Wochentag & 32 freitag,
149                    Wochentag & 64 samstag,
150                    Wochentag & 1 sonntag,
151                    oeffnungszeit.Timeslot,
152                    oeffnungszeit.Anzahlterminarbeitsplaetze Arbpltz,
153                    oeffnungszeit.reduktionTermineImInternet minusOnline,
154                    oeffnungszeit.erlaubemehrfachslots mehrfach,
155                    IF(oeffnungszeit.`Offen_ab`,
156                        oeffnungszeit.`Offen_ab`,
157                        standort.`Termine_ab`) buchVon,
158                    IF(oeffnungszeit.`Offen_bis`,
159                        oeffnungszeit.`Offen_bis`,
160                        standort.`Termine_bis`) buchBis
161                FROM
162                    oeffnungszeit
163                        LEFT JOIN
164                    standort ON oeffnungszeit.StandortID = standort.StandortID
165                        LEFT JOIN
166                    behoerde ON standort.BehoerdenID = behoerde.BehoerdenID
167                        LEFT JOIN
168                    organisation ON behoerde.OrganisationsID = organisation.OrganisationsID
169                WHERE
170                    oeffnungszeit.Endedatum >= NOW()
171                        AND behoerde.Name = "Bürgeramt"
172                ORDER BY organisation.Organisationsname ASC,
173                    Standortname ASC,
174                    oeffnungszeit.Wochentag ASC,
175                    oeffnungszeit.Startdatum ASC,
176                    oeffnungszeit.Terminanfangszeit ASC;
177        ';
178        return $this->fetchDataSet($entity, $sql);
179    }
180}