src/Infrastructure/Controller/Website/Istanza/PrivacyController.php line 20
<?phpdeclare(strict_types=1);namespace App\Infrastructure\Controller\Website\Istanza;use App\Application\Security\IstanzaCheckerInterface;use App\Infrastructure\Controller\Website\BaseWebsiteControllerInterface;use App\Infrastructure\Factory\Pratica\PraticaInformativaFactoryInterface;use App\Infrastructure\Provider\ConfigurazioneProviderInterface;use App\Infrastructure\Repository\Pratica\PraticaRepositoryInterface;use RuntimeException;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\DependencyInjection\Attribute\Autowire;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;use Symfony\Component\Routing\Annotation\Route;final class PrivacyController extends AbstractController implements BaseWebsiteControllerInterface{public function __construct(private readonly PraticaRepositoryInterface $praticaRepository,#[Autowire(service: 'App\Infrastructure\Provider\ConfigurazioneGeneraleProvider')]private readonly ConfigurazioneProviderInterface $configurazioneProvider,private readonly IstanzaCheckerInterface $istanzaChecker,private readonly PraticaInformativaFactoryInterface $praticaInformativaFactory,) {}/*** STEP 1 - ACCETTAZIONE PRIVACY*/#[Route('/istanza/{slug}/{id}/privacy', name: 'app_website_istanza_new_privacy', methods: ['GET', 'POST'])]public function __invoke(Request $request, int $id): Response{$pratica = $this->praticaRepository->getById($id);if (!$pratica) {throw new NotFoundHttpException();}if (!$this->istanzaChecker->canContinueActiveIstanza($pratica)) {throw new RuntimeException('Istanza non più attiva, non è possibile continuare');}if (!$this->istanzaChecker->canContinueIstanzaEntryStep($pratica)) {throw new RuntimeException('Pratica già inviata, non si può modificare');}$istanza = $pratica->getIstanza() ?? throw new RuntimeException('Istanza non trovata');if ($request->isMethod('POST')) {// @TODO: creare validazione backend// Al momento ipotizziamo che l'utente abbia scaricato il PDF se obbligatorio (no check su input form per ora)$istanzaInformativeList = $istanza->getInformativeList();foreach ($istanzaInformativeList as $istanzaInformativa) {$informativa = $istanzaInformativa->getInformativa();$rawData = ['informativa' => $informativa?->__toArray(),'informativa_istanza' => $istanzaInformativa->__toArray()];$praticaInformativa = $this->praticaInformativaFactory->create();$praticaInformativa->setRawData($rawData);$praticaInformativa->setPratica($pratica);$pratica->addInformativeList($praticaInformativa);}$pratica->setPrivacyPolicy(true);$this->praticaRepository->save($pratica);return $this->redirectToRoute('app_website_istanza_new_dati_generali',['slug' => $istanza->getSlug(),'id' => $pratica->getId(),]);}$informazioniComune = $this->configurazioneProvider->getAllConfig('informazioni_comune');$descrizionePrivacy = $this->configurazioneProvider->getConfig('istanza__privacy');$linkPrivacy = $this->configurazioneProvider->getConfig('istanza__privacy_link');return $this->render(self::TEMPLATE_ENGINE_PREFIX . '/istanza/tabs/privacy.html.twig',['slug' => $istanza->getSlug(),'id' => $pratica->getId(),'istanza' => $istanza,'informazioni_comune' => $informazioniComune,'descrizione_privacy' => $descrizionePrivacy['config'],'link_privacy' => $linkPrivacy['config'],]);}}