<?php
namespace App\V4\Controller\Quote;
use App\V4\Model\Quote\Quote;
use App\V4\Service\Quote\QuoteFormHandler;
use App\V4\Voters\QuoteVoter;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Serializer\Exception\ExceptionInterface;
class GetQuoteFormAction extends AbstractController
{
/**
* @var QuoteFormHandler
*/
private $quoteFormHandler;
/**
* @param QuoteFormHandler $quoteFormHandler
*/
public function __construct(QuoteFormHandler $quoteFormHandler)
{
$this->quoteFormHandler = $quoteFormHandler;
}
/**
* @param Request $request
* @param mixed $data
*
* @return JsonResponse
* @throws ExceptionInterface
*/
public function __invoke(Request $request, $data): JsonResponse
{
$this->denyAccessUnlessGranted(QuoteVoter::QUOTE_ADD_EDIT);
return $this
->quoteFormHandler
->getQuoteFormFromModel(
$data instanceof Quote ? $data : (new Quote())->setPotential(Quote::DEFAULT_POTENTIAL_VALUE),
$request->get('prospectId'),
$request->query->get('tabId'),
(bool) $request->query->get('isLegacy', false)
);
}
}