37 lines
1.2 KiB
PHP
37 lines
1.2 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace Presentation\Api\V1\Http\Controllers\Employees;
|
||
|
|
|
||
|
|
use Application\Usecase\Employees\Find\EmployeeShowPresenter;
|
||
|
|
use Application\Usecase\Employees\Find\FindEmployee;
|
||
|
|
use Illuminate\Http\JsonResponse;
|
||
|
|
use Presentation\Api\V1\Http\Requests\Employees\EmployeeShowRequest;
|
||
|
|
use Presentation\Api\V1\Http\Responses\Employees\EmployeeShowResponse;
|
||
|
|
use Shared\DDD\Usecase\Builder\UsecaseBuilder;
|
||
|
|
use Shared\DDD\Usecase\Builder\UsecaseExecutor;
|
||
|
|
|
||
|
|
final readonly class EmployeeShowController
|
||
|
|
{
|
||
|
|
/** @param UsecaseExecutor<\Shared\DDD\Usecase\Input, \Shared\DDD\Usecase\Output> $executor */
|
||
|
|
public function __construct(
|
||
|
|
private FindEmployee $usecase,
|
||
|
|
private UsecaseExecutor $executor,
|
||
|
|
private EmployeeShowPresenter $presenter,
|
||
|
|
) {
|
||
|
|
}
|
||
|
|
|
||
|
|
public function __invoke(EmployeeShowRequest $request): JsonResponse
|
||
|
|
{
|
||
|
|
/** @var \Application\Usecase\Employees\Find\EmployeeShowView $response */
|
||
|
|
$response = UsecaseBuilder::using($this->executor)
|
||
|
|
->do($this->usecase)
|
||
|
|
->from($request->toInput())
|
||
|
|
->with($this->presenter)
|
||
|
|
->run();
|
||
|
|
|
||
|
|
return (new EmployeeShowResponse($response))->present();
|
||
|
|
}
|
||
|
|
}
|