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