Newer
Older
<?php
namespace App\News\UseCase;
use App\News\Request\NewsDetailRequest;
use App\News\Service\NewsPrepareResponseService;
use App\Shared\DtoFactory\ErrorDtoFactory;
use App\Shared\Error\NotFoundError;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class NewsGetDetailUseCase
{
public function __construct(
private readonly NewsPrepareResponseService $responsePrepareService,
private readonly ErrorDtoFactory $errorFactory,
) {
}
public function execute(NewsDetailRequest $request): JsonResponse
{
try {
return new JsonResponse(
$this->responsePrepareService->bornDetailElement($request)
);
} catch (NotFoundError $error) {
$errorDto = $this->errorFactory->create($error);
return new JsonResponse($errorDto, $errorDto->status);
} catch (Throwable) {
return new JsonResponse([], Response::HTTP_INTERNAL_SERVER_ERROR);
}
}
}