Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
OlzMaterialParams
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
OlzMaterial
0.00% covered (danger)
0.00%
0 / 32
0.00% covered (danger)
0.00%
0 / 3
20
0.00% covered (danger)
0.00%
0 / 1
 hasAccess
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 searchSqlWhenHasAccess
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getHtmlWhenHasAccess
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace Olz\Components\OtherPages\OlzMaterial;
4
5use Olz\Components\Common\OlzRootComponent;
6use Olz\Components\Page\OlzFooter\OlzFooter;
7use Olz\Components\Page\OlzHeader\OlzHeader;
8use Olz\Entity\Roles\Role;
9use Olz\Repository\Roles\PredefinedRole;
10use Olz\Users\Components\OlzUserInfoModal\OlzUserInfoModal;
11use Olz\Utils\HttpParams;
12
13/** @extends HttpParams<array{}> */
14class OlzMaterialParams extends HttpParams {
15}
16
17/** @extends OlzRootComponent<array<string, mixed>> */
18class OlzMaterial extends OlzRootComponent {
19    public function hasAccess(): bool {
20        return true;
21    }
22
23    public function searchSqlWhenHasAccess(array $terms): string|array|null {
24        return null;
25    }
26
27    public static string $title = "Material & Kleider";
28    public static string $description = "Material und OLZ-Kleider, die die OL Zimmerberg vermietet bzw. verkauft.";
29
30    public function getHtmlWhenHasAccess(mixed $args): string {
31        $this->httpUtils()->validateGetParams(OlzMaterialParams::class);
32        $code_href = $this->envUtils()->getCodeHref();
33
34        $out = OlzHeader::render([
35            'title' => self::$title,
36            'description' => self::$description,
37        ]);
38
39        $out .= "<div class='content-full'>
40        <div>";
41
42        $out .= <<<'ZZZZZZZZZZ'
43            <h1>Material &amp; Kleider</h1>
44            <h2>Leihmaterial</h2>
45            <b>Zur Durchführung eines Orientierungslaufes mit Zeitnahme und Auswertung</b>
46            <table>
47            <tr>
48            <td></td>
49            <td>Kommerzieller OL<br>(mit Startgeld)</td>
50            <td>Nichtkommerzieller OL</td>
51            <td>OLZ Mitglieder</td>
52            <td>Einzelne Schulklassen</td>
53            <td>Nachwuchskader</td>
54            </tr>
55            <tr>
56            <td colspan='6'><b>Zeitnahme (SportIdent)</b></td>
57            </tr>
58            <tr>
59            <td>1 Set SI-Material: 1 Koffer mit 20 SI-Einheiten, 1 Koffer mit komplettem Druckerset, Bedienungsanleitung. 1 Tasche mit 20 Badges.</td>
60            <td>100.-</td>
61            <td>50.-</td>
62            <td>25.-</td>
63            <td>25.-</td>
64            <td>25.-</td>
65            </tr>
66            <tr>
67            <td>2 Sets</td>
68            <td>150.-</td>
69            <td>90.-</td>
70            <td>40.-</td>
71            <td>40.-</td>
72            <td>40.-</td>
73            </tr>
74            <tr>
75            <td colspan='6'><b>Kompasse</b></td>
76            </tr>
77            <tr>
78            <td>Kompasse (pro Stück)</td>
79            <td>2.-</td>
80            <td>0.-</td>
81            <td>0.-</td>
82            <td>0.-</td>
83            <td>0.-</td>
84            </tr>
85            <tr>
86            <td colspan='6'><b>Posten</b></td>
87            </tr>
88            <tr>
89            <td>Postenstangen mit Flagge und SI Halterung (pro Stück)</td>
90            <td>1.50</td>
91            <td>0.-</td>
92            <td>0.-</td>
93            <td>0.-</td>
94            <td>0.-</td>
95            </tr>
96            <tr>
97            <td>Zementsteine und Steckhölzer für Stadt-OL</td>
98            <td>0.-</td>
99            <td>0.-</td>
100            <td>0.-</td>
101            <td>0.-</td>
102            <td>0.-</td>
103            </tr>
104            <tr>
105            <td>Startband / Zielband (pro Stück)</td>
106            <td>5.-</td>
107            <td>0.-</td>
108            <td>0.-</td>
109            <td>0.-</td>
110            <td>0.-</td>
111            </tr>
112            </table>
113            <div>Alle Preise: Miete pro Tag; Pro Woche werden 3 Tage berechnet</div>
114            <br>
115            <b>Kontakt für Bestellung, Abholung und Rückgabe des Materials:</b>
116            ZZZZZZZZZZ;
117
118        $entityManager = $this->dbUtils()->getEntityManager();
119        $role_repo = $entityManager->getRepository(Role::class);
120        $kleider_username = PredefinedRole::Kleider->value;
121        $sportident_role = $role_repo->getPredefinedRole(PredefinedRole::SportIdent);
122
123        $sportident_assignees = $sportident_role?->getUsers() ?? [];
124        $out .= "<ul class='no-style sportident-assignees'>";
125        foreach ($sportident_assignees as $sportident_assignee) {
126            $out .= "<li>";
127            $out .= OlzUserInfoModal::render([
128                'user' => $sportident_assignee,
129                'mode' => 'name_picture',
130            ]);
131            $out .= "</li>";
132        }
133        $out .= "</ul>";
134
135        $out .= <<<ZZZZZZZZZZ
136            <div><b>Bezahlung: </b>Der geschuldete Betrag ist per ESR innerhalb von 30 Tagen zu bezahlen. Ein Einzahlungsschein dafür wird beim Abholen des Materials abgegeben. Die Zahlungsinformationen sind auch auf der <a href='{$code_href}service' class='linkint'>Service-Seite</a> zu finden.</div>
137            <div><b>Verlorenes, beschädigtes Material: </b>Für verlorenes oder beschädigtes Material kommt der Mieter vollumfänglich auf. Die Preise richten sich nach den offiziellen Preisen des Vertreters von SportIdent in der Schweiz. Das Material muss sauber zurückgebracht werden.</div>
138
139            <h2>Dienstleistungen</h2>
140            <div>Die OL Zimmerberg bietet für Schulen und Vereinen oder andere Gruppen geleitete OL-Kurse an.</div>
141            <div>Das Niveau wird der Gruppe angepasst und kann von Schnupperkursen bis zu einem Fortgeschrittenenkurs varieren.</div>
142            <div>Die Kurse werden halbtags oder ganztags durchgeführt.</div>
143            <br/>
144            <div><b>Package 1: Halbtages Kurs für eine Schulklasse von ca. 25 Personen, CHF 150.--, beinhaltet folgendes:</b></div>
145            <ul>
146            <li>Postenmaterial</li>
147            <li>Elektronisches Auswertungssystem (SI-Material)</li>
148            <li>Bei einem kl. Wettkampf: Auswertung des Wettkampfs</li>
149            <li>Kartenmaterial & Kompasse</li>
150            <li>Fachkundige Betreuung</li>
151            </ul>
152            <div>(Grössere Gruppen, Preis auf Anfrage)</div>
153            <br/>
154            <div><b>Package 2: Ganztages Kurs für eine Schulklasse von ca. 25 Personen, CHF 250.--, beinhaltet folgendes:</b></div>
155            <ul>
156            <li>Postenmaterial</li>
157            <li>Elektronisches Auswertungssystem (SI-Material)</li>
158            <li>Bei einem kl. Wettkampf: Auswertung des Wettkampfs</li>
159            <li>Kartenmaterial & Kompasse</li>
160            <li>Fachkundige Betreuung</li>
161            </ul>
162            <div>(Grössere Gruppen, Preis auf Anfrage)</div>
163
164            <h2>Kleider</h2>
165            <a href='{$code_href}verein/{$kleider_username}' class='linkint'>Ressort Kleider</a>
166            ZZZZZZZZZZ;
167
168        $out .= "</div>
169        </div>";
170
171        $out .= OlzFooter::render();
172
173        return $out;
174    }
175}