AbgleichAction.php
Pfad: src/Infrastructure/Http/AbgleichAction.php
Ext: php
Größe: 1684 Bytes
Geändert: 2026-07-16 00:35:04+02
<?php
declare(strict_types=1);
namespace Demo\Infrastructure\Http;
use Demo\Application\Abgleich\PruefeKatalog;
use Demo\Domain\Abgleich\Abweichung;
/**
* Treibender Adapter: zeigt den read-only Katalog-Realitaets-Abgleich unter /abgleich.
*/
final class AbgleichAction
{
/** @var PruefeKatalog Anwendungsfall. */
private PruefeKatalog $pruefe;
/** @var TemplateRenderer Template-Renderer. */
private TemplateRenderer $view;
/** @var Navigation Hauptnavigation. */
private Navigation $nav;
/**
* @param PruefeKatalog $pruefe Anwendungsfall.
* @param TemplateRenderer $view Renderer.
* @param Navigation $nav Navigation.
*/
public function __construct(PruefeKatalog $pruefe, TemplateRenderer $view, Navigation $nav)
{
$this->pruefe = $pruefe;
$this->view = $view;
$this->nav = $nav;
}
/**
* Baut die Abgleichsseite.
*
* @param array<string,string> $params Routen-Parameter (ungenutzt).
* @return Response HTML-Antwort.
*/
public function __invoke(array $params): Response
{
$befunde = $this->pruefe->execute();
$fehlend = 0;
foreach ($befunde as $b) {
if ($b->befund === Abweichung::FEHLT_REAL) {
$fehlend++;
}
}
$html = $this->view->render('layout', [
'inner' => 'abgleich',
'titel' => 'Abgleich',
'aktiv' => '/abgleich',
'nav' => $this->nav->items(),
'befunde' => $befunde,
'fehlend' => $fehlend,
]);
return new Response(200, 'text/html; charset=UTF-8', $html);
}
}