update project

This commit is contained in:
root
2026-05-30 01:11:35 -04:00
parent 3a0628ecc7
commit 2225f6bc72
9743 changed files with 1122482 additions and 59 deletions
@@ -0,0 +1,36 @@
<?php declare(strict_types=1);
namespace App\Http\Controllers\Api\V2\Reporting;
use App\Domain\SchoolCore\Context\SchoolContextStore;
use App\Domain\SchoolCore\Reporting\Contracts\ReportRegistryContract;
use App\Domain\SchoolCore\Reporting\Contracts\ReportRunnerContract;
use App\Http\Requests\Reporting\ListReportsRequest;
use App\Http\Requests\Reporting\RunReportRequest;
use App\Http\Resources\V2\Reporting\ReportResultResource;
use App\Support\Api\ApiResponse;
use Illuminate\Http\JsonResponse;
use Illuminate\Routing\Controller;
final class ReportController extends Controller
{
public function __construct(private readonly SchoolContextStore $context, private readonly ReportRegistryContract $registry, private readonly ReportRunnerContract $runner) {}
public function index(ListReportsRequest $request): JsonResponse
{
$reports = array_map(fn ($report) => [
'key' => $report->key(),
'name' => $report->name(),
'category' => $report->category()->value,
'visibility' => $report->visibility()->value,
], $this->registry->availableReports($this->context->current()));
return ApiResponse::success($reports);
}
public function run(RunReportRequest $request): JsonResponse
{
$result = $this->runner->run($this->context->current(), $request->toDTO());
return ApiResponse::success((new ReportResultResource($result))->resolve($request));
}
}
@@ -0,0 +1,22 @@
<?php declare(strict_types=1);
namespace App\Http\Controllers\Api\V2\Reporting;
use App\Domain\SchoolCore\Context\SchoolContextStore;
use App\Domain\SchoolCore\Reporting\Contracts\ReportExportServiceContract;
use App\Http\Requests\Reporting\ExportReportRequest;
use App\Http\Resources\V2\Reporting\ReportExportResource;
use App\Support\Api\ApiResponse;
use Illuminate\Http\JsonResponse;
use Illuminate\Routing\Controller;
final class ReportExportController extends Controller
{
public function __construct(private readonly SchoolContextStore $context, private readonly ReportExportServiceContract $exports) {}
public function store(ExportReportRequest $request): JsonResponse
{
$result = $this->exports->export($this->context->current(), $request->toDTO());
return ApiResponse::success((new ReportExportResource($result))->resolve($request), 'Report export created.');
}
}