<?php
declare(strict_types=1);
namespace App\V4\Action\Quote;
use App\V4\Builder\PublicTransformer\PublicTransformerBuilder;
use App\V4\Transformer\FQCNToShortNameTransformer;
use Lexik\Bundle\JWTAuthenticationBundle\Security\Authentication\Token\JWTUserToken;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Security;
/**
* @Route("/api/serialize-entity/quote/{quoteId}", methods={"GET"})
*/
class SerializeQuoteAction extends AbstractController
{
/**
* @var PublicTransformerBuilder
*/
private $publicTransformerBuilder;
/**
* @var Security
*/
private $security;
public function __construct(PublicTransformerBuilder $publicTransformerBuilder, Security $security)
{
$this->publicTransformerBuilder = $publicTransformerBuilder;
$this->security = $security;
}
public function __invoke(string $quoteId): Response
{
$data = $this->publicTransformerBuilder->transformFromId(FQCNToShortNameTransformer::ENTITY_QUOTE, $quoteId);
/** @var JWTUserToken $token */
$token = $this->security->getToken();
return new JsonResponse(array_merge($data, [
// :(
'_token' => $token->getCredentials(),
]));
}
}