Files
2026-05-30 01:11:35 -04:00

29 lines
1.1 KiB
PHP

<?php declare(strict_types=1);
namespace App\Http\Controllers\Reporting;
use App\Domain\SchoolCore\Context\SchoolContext;
use App\Domain\SchoolCore\Reporting\Contracts\ReportRegistryContract;
use App\Domain\SchoolCore\Reporting\Contracts\ReportRunnerContract;
use App\Http\Requests\Reporting\RunReportRequest;
use Illuminate\Routing\Controller;
final class ReportController extends Controller
{
public function __construct(private readonly ReportRunnerContract $runner, private readonly ReportRegistryContract $registry) {}
public function index(RunReportRequest $request): array
{
/** @var SchoolContext $context */
$context = $request->attributes->get(SchoolContext::class);
return ['reports' => array_map(fn ($report) => ['key' => $report->key(), 'name' => $report->name()], $this->registry->availableReports($context))];
}
public function run(RunReportRequest $request): array
{
/** @var SchoolContext $context */
$context = $request->attributes->get(SchoolContext::class);
$result = $this->runner->run($context, $request->toDTO());
return ['data' => $result];
}
}