Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 30
0.00% covered (danger)
0.00%
0 / 1
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 / 30
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 1
 getHtml
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\OlzComponent;
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 OlzComponent<array<string, mixed>> */
18class OlzMaterial extends OlzComponent {
19    public static string $title = "Material & Kleider";
20    public static string $description = "Material und OLZ-Kleider, die die OL Zimmerberg vermietet bzw. verkauft.";
21
22    public function getHtml(mixed $args): string {
23        $this->httpUtils()->validateGetParams(OlzMaterialParams::class);
24        $code_href = $this->envUtils()->getCodeHref();
25
26        $out = OlzHeader::render([
27            'title' => self::$title,
28            'description' => self::$description,
29        ]);
30
31        $out .= "<div class='content-full'>
32        <div>";
33
34        $out .= <<<'ZZZZZZZZZZ'
35            <h2>Leihmaterial</h2>
36            <b>Zur Durchführung eines Orientierungslaufes mit Zeitnahme und Auswertung</b>
37            <table>
38            <tr>
39            <td></td>
40            <td>Kommerzieller OL<br>(mit Startgeld)</td>
41            <td>Nichtkommerzieller OL</td>
42            <td>OLZ Mitglieder</td>
43            <td>Einzelne Schulklassen</td>
44            <td>Nachwuchskader</td>
45            </tr>
46            <tr>
47            <td colspan='6'><b>Zeitnahme (SportIdent)</b></td>
48            </tr>
49            <tr>
50            <td>1 Set SI-Material: 1 Koffer mit 20 SI-Einheiten, 1 Koffer mit komplettem Druckerset, Bedienungsanleitung. 1 Tasche mit 20 Badges.</td>
51            <td>100.-</td>
52            <td>50.-</td>
53            <td>25.-</td>
54            <td>25.-</td>
55            <td>25.-</td>
56            </tr>
57            <tr>
58            <td>2 Sets</td>
59            <td>150.-</td>
60            <td>90.-</td>
61            <td>40.-</td>
62            <td>40.-</td>
63            <td>40.-</td>
64            </tr>
65            <tr>
66            <td colspan='6'><b>Kompasse</b></td>
67            </tr>
68            <tr>
69            <td>Kompasse (pro Stück)</td>
70            <td>2.-</td>
71            <td>0.-</td>
72            <td>0.-</td>
73            <td>0.-</td>
74            <td>0.-</td>
75            </tr>
76            <tr>
77            <td colspan='6'><b>Posten</b></td>
78            </tr>
79            <tr>
80            <td>Postenstangen mit Flagge und SI Halterung (pro Stück)</td>
81            <td>1.50</td>
82            <td>0.-</td>
83            <td>0.-</td>
84            <td>0.-</td>
85            <td>0.-</td>
86            </tr>
87            <tr>
88            <td>Zementsteine und Steckhölzer für Stadt-OL</td>
89            <td>0.-</td>
90            <td>0.-</td>
91            <td>0.-</td>
92            <td>0.-</td>
93            <td>0.-</td>
94            </tr>
95            <tr>
96            <td>Startband / Zielband (pro Stück)</td>
97            <td>5.-</td>
98            <td>0.-</td>
99            <td>0.-</td>
100            <td>0.-</td>
101            <td>0.-</td>
102            </tr>
103            </table>
104            <div>Alle Preise: Miete pro Tag; Pro Woche werden 3 Tage berechnet</div>
105            <br>
106            <b>Kontakt für Bestellung, Abholung und Rückgabe des Materials:</b>
107            ZZZZZZZZZZ;
108
109        $entityManager = $this->dbUtils()->getEntityManager();
110        $role_repo = $entityManager->getRepository(Role::class);
111        $kleider_username = PredefinedRole::Kleider->value;
112        $sportident_role = $role_repo->getPredefinedRole(PredefinedRole::SportIdent);
113
114        $sportident_assignees = $sportident_role?->getUsers() ?? [];
115        $out .= "<ul class='no-style sportident-assignees'>";
116        foreach ($sportident_assignees as $sportident_assignee) {
117            $out .= "<li>";
118            $out .= OlzUserInfoModal::render([
119                'user' => $sportident_assignee,
120                'mode' => 'name_picture',
121            ]);
122            $out .= "</li>";
123        }
124        $out .= "</ul>";
125
126        $out .= <<<ZZZZZZZZZZ
127            <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>
128            <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>
129
130            <h2>Dienstleistungen</h2>
131            <div>Die OL Zimmerberg bietet für Schulen und Vereinen oder andere Gruppen geleitete OL-Kurse an.</div>
132            <div>Das Niveau wird der Gruppe angepasst und kann von Schnupperkursen bis zu einem Fortgeschrittenenkurs varieren.</div>
133            <div>Die Kurse werden halbtags oder ganztags durchgeführt.</div>
134            <br/>
135            <div><b>Package 1: Halbtages Kurs für eine Schulklasse von ca. 25 Personen, CHF 150.--, beinhaltet folgendes:</b></div>
136            <ul>
137            <li>Postenmaterial</li>
138            <li>Elektronisches Auswertungssystem (SI-Material)</li>
139            <li>Bei einem kl. Wettkampf: Auswertung des Wettkampfs</li>
140            <li>Kartenmaterial & Kompasse</li>
141            <li>Fachkundige Betreuung</li>
142            </ul>
143            <div>(Grössere Gruppen, Preis auf Anfrage)</div>
144            <br/>
145            <div><b>Package 2: Ganztages Kurs für eine Schulklasse von ca. 25 Personen, CHF 250.--, beinhaltet folgendes:</b></div>
146            <ul>
147            <li>Postenmaterial</li>
148            <li>Elektronisches Auswertungssystem (SI-Material)</li>
149            <li>Bei einem kl. Wettkampf: Auswertung des Wettkampfs</li>
150            <li>Kartenmaterial & Kompasse</li>
151            <li>Fachkundige Betreuung</li>
152            </ul>
153            <div>(Grössere Gruppen, Preis auf Anfrage)</div>
154
155            <h2>Kleider</h2>
156            <a href='{$code_href}verein/{$kleider_username}' class='linkint'>Ressort Kleider</a>
157            ZZZZZZZZZZ;
158
159        $out .= "</div>
160        </div>";
161
162        $out .= OlzFooter::render();
163
164        return $out;
165    }
166}