Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 38
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
OlzKartenParams
n/a
0 / 0
n/a
0 / 0
0
n/a
0 / 0
OlzKarten
0.00% covered (danger)
0.00%
0 / 38
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 getHtml
0.00% covered (danger)
0.00%
0 / 38
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace Olz\Karten\Components\OlzKarten;
4
5use Olz\Components\Common\OlzComponent;
6use Olz\Components\Common\OlzEditableText\OlzEditableText;
7use Olz\Components\Page\OlzFooter\OlzFooter;
8use Olz\Components\Page\OlzHeader\OlzHeader;
9use Olz\Entity\Karten\Karte;
10use Olz\Karten\Components\OlzKartenList\OlzKartenList;
11use Olz\Utils\HttpParams;
12
13/** @extends HttpParams<array{}> */
14class OlzKartenParams extends HttpParams {
15}
16
17/** @extends OlzComponent<array<string, mixed>> */
18class OlzKarten extends OlzComponent {
19    public static string $title = "Karten";
20    public static string $description = "Die OL-Karten, die die OL Zimmerberg aufnimmt, unterhält und verkauft.";
21
22    public function getHtml(mixed $args): string {
23        $this->httpUtils()->validateGetParams(OlzKartenParams::class);
24        $db = $this->dbUtils()->getDb();
25        $code_href = $this->envUtils()->getCodeHref();
26
27        $out = OlzHeader::render([
28            'title' => self::$title,
29            'description' => self::$description,
30        ]);
31
32        $out .= "<div class='content-right olz-karten'>";
33        $out .= OlzKartenList::render([]);
34        $out .= "</div>
35        <div class='content-middle olz-karten'>";
36
37        $karten_repo = $this->entityManager()->getRepository(Karte::class);
38        $karten = $karten_repo->findAll();
39        $karten_data = array_map(function (Karte $karte) use ($code_href) {
40            $icon_by_type = [
41                'ol' => 'orienteering_forest_16.svg',
42                'stadt' => 'orienteering_village_16.svg',
43                'scool' => 'orienteering_scool_16.svg',
44            ];
45            return [
46                'id' => $karte->getId(),
47                'url' => "{$code_href}karten/{$karte->getId()}",
48                'icon' => $icon_by_type[$karte->getKind()] ?? 'orienteering_scool_16.svg',
49                'name' => $karte->getName(),
50                'lat' => $karte->getLatitude(),
51                'lng' => $karte->getLongitude(),
52            ];
53        }, $karten);
54        $karten_json = json_encode($karten_data);
55
56        $out .= <<<ZZZZZZZZZZ
57            <div id='olz-karten-map' class='test-flaky'></div>
58            <script>olz.olzKartenMapRender({$karten_json});</script>
59            <br>
60            ZZZZZZZZZZ;
61
62        $out .= "<h2>Kartenverkauf</h2>";
63        $out .= OlzEditableText::render(['snippet_id' => 12]);
64        $out .= "</div>";
65
66        $out .= OlzFooter::render();
67
68        return $out;
69    }
70}