Files
laravel_school_api_old/app/Http/Controllers/Students/StudentLifecycleController.php
T
2026-05-29 04:33:03 -04:00

6 lines
1.7 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Http\Controllers\Students;
use App\Domain\SchoolCore\Context\SchoolContext; use App\Domain\SchoolCore\Students\Contracts\StudentReadServiceContract; use App\Domain\SchoolCore\Students\Contracts\StudentServiceContract; use App\Http\Requests\Students\CreateStudentRequest; use App\Http\Requests\Students\StudentSearchRequest; use App\Http\Requests\Students\StudentStatusTransitionRequest; use App\Http\Requests\Students\UpdateStudentRequest; use Illuminate\Routing\Controller;
final class StudentLifecycleController extends Controller { public function __construct(private readonly StudentServiceContract $students, private readonly StudentReadServiceContract $reads){} public function store(CreateStudentRequest $request): array { $context=$request->attributes->get(SchoolContext::class); return ['data'=>$this->students->createStudent($context,$request->toDTO())]; } public function show(CreateStudentRequest $request,int $student): array { $context=$request->attributes->get(SchoolContext::class); return ['data'=>$this->students->getStudent($context,$student)]; } public function update(UpdateStudentRequest $request,int $student): array { $context=$request->attributes->get(SchoolContext::class); return ['data'=>$this->students->updateStudent($context,$student,$request->toDTO())]; } public function transition(StudentStatusTransitionRequest $request,int $student): array { $context=$request->attributes->get(SchoolContext::class); return ['data'=>$this->students->transitionStatus($context,$student,$request->toDTO())]; } public function index(StudentSearchRequest $request): array { $context=$request->attributes->get(SchoolContext::class); return ['data'=>$this->reads->search($context,$request->toDTO())]; } }