evwiki/src/Domain/Search/View/CarRevisionComparison/CarRevisionComparisonAiViewBuilder.php
2025-06-09 18:15:22 +02:00

40 lines
1.2 KiB
PHP

<?php
namespace App\Domain\Search\View\CarRevisionComparison;
use App\Domain\Model\Id\CarRevisionId;
use App\Domain\Search\TileCollection;
use App\Domain\Search\View\AiViewBuilder;
final readonly class CarRevisionComparisonAiViewBuilder implements AiViewBuilder
{
public function __construct(
private readonly CarRevisionComparisonView $carRevisionComparisonView
) {}
public function buildView(array $data): TileCollection
{
if (!is_string($data['car_revision_id_1'] ?? null)) {
throw new \InvalidArgumentException('Car revision ID 1 is required');
}
if (!is_string($data['car_revision_id_2'] ?? null)) {
throw new \InvalidArgumentException('Car revision ID 2 is required');
}
return $this->carRevisionComparisonView->buildView(new CarRevisionId($data['car_revision_id_1']), new CarRevisionId($data['car_revision_id_2']));
}
public function dataDescription(): array
{
return [
'car_revision_id_1' => 'Car revision ID 1',
'car_revision_id_2' => 'Car revision ID 2',
];
}
public function description(): string
{
return 'This view shows a comparison of two car revisions.';
}
}