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