{"id":120,"date":"2026-01-10T19:32:55","date_gmt":"2026-01-10T18:32:55","guid":{"rendered":"https:\/\/www.comunedicaivano.it\/servizidigitali\/?page_id=120"},"modified":"2026-03-20T07:10:16","modified_gmt":"2026-03-20T06:10:16","slug":"prenotazione-appuntamento","status":"publish","type":"page","link":"https:\/\/www.comunedicaivano.it\/servizidigitali\/prenotazione-appuntamento\/","title":{"rendered":"Prenotazione appuntamento"},"content":{"rendered":"\n<section class=\"container my-5\" id=\"pren-form\">\n  <h2 class=\"mb-4\">Prenotazione appuntamento<\/h2>\n\n  <div class=\"alert alert-danger d-none\" id=\"prenErr\"><\/div>\n\n  <form id=\"prenForm\" class=\"row g-3\" method=\"post\" action=\"[caivano_admin_post_url]\" novalidate>\n    <input type=\"hidden\" name=\"action\" value=\"caivano_prenota_appuntamento\">\n\n    <input type=\"hidden\" id=\"_wpnonce\" name=\"_wpnonce\" value=\"204998443c\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/servizidigitali\/wp-json\/wp\/v2\/pages\/120\" \/>\n\n    <!-- Honeypot -->\n    <div style=\"position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden;\">\n      <label>Company <input type=\"text\" name=\"pren_company\" tabindex=\"-1\" autocomplete=\"off\"><\/label>\n    <\/div>\n\n    <!-- Timestamp -->\n    <input type=\"hidden\" name=\"pren_ts\" id=\"pren_ts\" value=\"\">\n\n    <div class=\"col-md-6\">\n      <label class=\"form-label\">Nome *<\/label>\n      <input type=\"text\" name=\"nome\" class=\"form-control\" required maxlength=\"80\">\n    <\/div>\n\n    <div class=\"col-md-6\">\n      <label class=\"form-label\">Cognome *<\/label>\n      <input type=\"text\" name=\"cognome\" class=\"form-control\" required maxlength=\"80\">\n    <\/div>\n\n    <div class=\"col-md-6\">\n      <label class=\"form-label\">Codice Fiscale *<\/label>\n      <input type=\"text\" name=\"codice_fiscale\" class=\"form-control\" required maxlength=\"16\" style=\"text-transform:uppercase\">\n    <\/div>\n\n    <div class=\"col-md-6\">\n      <label class=\"form-label\">Telefono *<\/label>\n      <input type=\"text\" name=\"telefono\" class=\"form-control\" required maxlength=\"30\">\n    <\/div>\n\n    <div class=\"col-md-6\">\n      <label class=\"form-label\">Email *<\/label>\n      <input type=\"email\" name=\"email\" class=\"form-control\" required maxlength=\"190\">\n    <\/div>\n\n    <div class=\"col-md-6\">\n      <label class=\"form-label\">Tipologia richiesta *<\/label>\n      <select name=\"categoria\" id=\"categoria\" class=\"form-select\" required>\n        <option value=\"\">Seleziona\u2026<\/option>\n        <option value=\"Pratiche urbanistiche\">Pratiche urbanistiche<\/option>\n        <option value=\"Edilizia Popolare - Parco verde\">Edilizia Popolare &#8211; Parco verde<\/option>\n        <option value=\"Lavori pubblici\">Lavori pubblici<\/option>\n        <option value=\"Servizi al Cittadino\">Servizi al Cittadino<\/option>\n        <option value=\"SUAP\">SUAP<\/option>\n        <option value=\"Varie\">Varie<\/option>\n      <\/select>\n    <\/div>\n\n    <!-- Solo Pratiche urbanistiche -->\n    <div class=\"col-12 d-none\" id=\"urbanisticaBox\">\n      <div class=\"row g-3\">\n        <div class=\"col-md-6\">\n          <label class=\"form-label\">Tecnico *<\/label>\n          <select name=\"tecnico\" id=\"tecnico\" class=\"form-select\">\n            <option value=\"\">Seleziona\u2026<\/option>\n            <option value=\"Matteo Migliaccio\">Matteo Migliaccio<\/option>\n            <option value=\"Valeria Mariniello\">Valeria Mariniello<\/option>\n            <option value=\"Carmen Mauriello\">Carmen Mauriello<\/option>\n            <option value=\"Salvatore Ariemma\">Salvatore Ariemma<\/option>\n          <\/select>\n        <\/div>\n\n        <div class=\"col-md-6\">\n          <label class=\"form-label\">Numero pratica *<\/label>\n          <input type=\"text\" name=\"numero_pratica\" id=\"numero_pratica\" class=\"form-control\" maxlength=\"60\">\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Solo Servizi al Cittadino -->\n    <div class=\"col-12 d-none\" id=\"cittadinoBox\">\n      <div class=\"row g-3\">\n        <div class=\"col-md-6\">\n          <label class=\"form-label\">Servizi *<\/label>\n          <select name=\"servizio_cittadino\" id=\"servizio_cittadino\" class=\"form-select\">\n            <option value=\"\">Seleziona\u2026<\/option>\n            <option value=\"Accesso agli atti\">Accesso agli atti<\/option>\n            <option value=\"Richiesta CDU\">Richiesta CDU<\/option>\n            <option value=\"SOA\">SOA<\/option>\n            <option value=\"Occupazione suolo pubblico\">Occupazione suolo pubblico<\/option>\n            <option value=\"Servizi Cimiteriali\">Servizi Cimiteriali<\/option>\n            <option value=\"Condoni\">Condoni<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- Solo SUAP -->\n    <div class=\"col-12 d-none\" id=\"suapBox\">\n      <div class=\"row g-3\">\n        <div class=\"col-md-6\">\n          <label class=\"form-label\">Istruttori *<\/label>\n          <select name=\"istruttore_suap\" id=\"istruttore_suap\" class=\"form-select\">\n            <option value=\"\">Seleziona\u2026<\/option>\n            <option value=\"Giovanni Costanzo\">Giovanni Costanzo<\/option>\n            <option value=\"Concetta De Stefano\">Concetta De Stefano<\/option>\n            <option value=\"Felice Vitale\">Felice Vitale<\/option>\n          <\/select>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"col-12\">\n      <label class=\"form-label\">Oggetto della richiesta *<\/label>\n      <input type=\"text\" name=\"oggetto\" class=\"form-control\" required maxlength=\"200\">\n    <\/div>\n\n    <div class=\"col-12\">\n      <label class=\"form-label\">Descrizione della richiesta *<\/label>\n      <textarea name=\"descrizione\" class=\"form-control\" rows=\"6\" required><\/textarea>\n    <\/div>\n\n    <input type=\"hidden\" name=\"pren_captcha_token\" value=\"dHqlVZxNhTmOeZISQTmj\"><div class=\"col-md-6\"><label class=\"form-label\">Verifica anti-spam *<\/label><div class=\"input-group\"><span class=\"input-group-text\">Quanto fa 6 + 7?<\/span><input type=\"text\" name=\"pren_captcha\" class=\"form-control\" required inputmode=\"numeric\" pattern=\"[0-9]{1,2}\"><\/div><\/div>\n\n    <div class=\"col-12\">\n      <div class=\"form-check\">\n        <input class=\"form-check-input\" type=\"checkbox\" value=\"1\" id=\"privacy\" name=\"privacy\" required>\n        <label class=\"form-check-label\" for=\"privacy\">\n          Dichiaro di aver preso visione dell\u2019informativa privacy e autorizzo il trattamento dei dati personali ai sensi del Reg. (UE) 2016\/679 (GDPR). *\n        <\/label>\n      <\/div>\n    <\/div>\n\n    <div class=\"col-12\">\n      <button type=\"submit\" class=\"btn btn-primary\" id=\"prenSubmit\">Invia richiesta<\/button>\n    <\/div>\n  <\/form>\n<\/section>\n\n<script>\n(function(){\n  const form = document.getElementById('prenForm');\n  const errBox = document.getElementById('prenErr');\n  const ts = document.getElementById('pren_ts');\n\n  const categoria = document.getElementById('categoria');\n  const urbanisticaBox = document.getElementById('urbanisticaBox');\n  const cittadinoBox = document.getElementById('cittadinoBox');\n  const suapBox = document.getElementById('suapBox');\n  const tecnico = document.getElementById('tecnico');\n  const numeroPratica = document.getElementById('numero_pratica');\n  const servizioCittadino = document.getElementById('servizio_cittadino');\n  const istruttoreSuap = document.getElementById('istruttore_suap');\n  const btn = document.getElementById('prenSubmit');\n\n  \/\/ timestamp al load\n  if (ts) ts.value = String(Date.now());\n\n  function showErr(msg){\n    errBox.textContent = msg;\n    errBox.classList.remove('d-none');\n    alert(\"Errore: \" + msg);\n    document.getElementById('pren-form')?.scrollIntoView({behavior:'smooth'});\n  }\n\n  function toggleConditional(){\n    const isUrb = categoria.value === 'Pratiche urbanistiche';\n    const isCit = categoria.value === 'Servizi al Cittadino';\n    const isSuap = categoria.value === 'SUAP';\n\n    urbanisticaBox.classList.toggle('d-none', !isUrb);\n    cittadinoBox.classList.toggle('d-none', !isCit);\n    suapBox.classList.toggle('d-none', !isSuap);\n\n    tecnico.required = isUrb;\n    numeroPratica.required = isUrb;\n\n    servizioCittadino.required = isCit;\n    istruttoreSuap.required = isSuap;\n\n    if (!isUrb) { tecnico.value=''; numeroPratica.value=''; }\n    if (!isCit) { servizioCittadino.value=''; }\n    if (!isSuap) { istruttoreSuap.value=''; }\n  }\n  categoria.addEventListener('change', toggleConditional);\n  toggleConditional();\n\n  form.addEventListener('submit', async function(e){\n    e.preventDefault();\n\n    \/\/ validazione immediata\n    if (!form.checkValidity()) {\n      showErr(\"Compila tutti i campi obbligatori.\");\n      return;\n    }\n    if (categoria.value === 'Pratiche urbanistiche') {\n      if (!tecnico.value) { showErr(\"Seleziona il tecnico.\"); return; }\n      if (!numeroPratica.value.trim()) { showErr(\"Inserisci il numero pratica.\"); return; }\n    }\n    if (categoria.value === 'Servizi al Cittadino') {\n      if (!servizioCittadino.value) { showErr(\"Seleziona il servizio.\"); return; }\n    }\n    if (categoria.value === 'SUAP') {\n      if (!istruttoreSuap.value) { showErr(\"Seleziona l'istruttore SUAP.\"); return; }\n    }\n\n    \/\/ non toccare ts qui: deve restare quello del load\n    btn.disabled = true;\n\n    const fd = new FormData(form);\n    fd.set('action', 'caivano_prenota_appuntamento_ajax');\n\n    try {\n      const res = await fetch(\"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-admin\/admin-ajax.php\", { method:'POST', body: fd, credentials:'same-origin' });\n      const data = await res.json();\n\n      if (data && data.success) {\n        \/\/ Redirect alla pagina \"domanda inviata\"\n        window.location.href = data.redirect || \"https:\/\/www.comunedicaivano.it\/servizidigitali\/domanda-inviata\/\";\n        return;\n      }\n      showErr((data && data.message) ? data.message : \"Errore durante l'invio.\");\n    } catch (err) {\n      showErr(\"Errore tecnico durante l'invio.\");\n    } finally {\n      btn.disabled = false;\n    }\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Prenotazione appuntamento Company Nome * Cognome * Codice Fiscale * Telefono * Email * Tipologia richiesta * Seleziona\u2026Pratiche urbanisticheEdilizia Popolare &#8211; Parco verdeLavori pubbliciServizi al &#8230; <\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-120","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/pages\/120","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/comments?post=120"}],"version-history":[{"count":10,"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/pages\/120\/revisions"}],"predecessor-version":[{"id":358,"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/pages\/120\/revisions\/358"}],"wp:attachment":[{"href":"https:\/\/www.comunedicaivano.it\/servizidigitali\/wp-json\/wp\/v2\/media?parent=120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}