function pps_ajax_callback()
{
    $tprezzi = new TabellaPrezziController();
    if (isset($_POST['id_type'])) {
        //riconosciuto il parametro POST che identifica il tipo di infisso
        //si può avere id_type = F per una finestra e id_type = P per una portafinestra
        //bisogna eseguire una query che ritorni il numero di ante a seconda tel type
        $parameters['type'] = $_POST['id_type'];
        unset($_POST['id_type']);
        $result = $tprezzi->getAnte($parameters);
        echo json_encode($result);
    }
    if (isset($_POST['id_type_2']) && isset($_POST['ante'])) {
        $parameters['type'] = $_POST['id_type_2'];
        $parameters['ante'] = $_POST['ante'];
        unset($_POST['id_type_2']);
        unset($_POST['ante']);
        $result = $tprezzi->getTabelleByParameters($parameters);
        echo json_encode($result);
    }
    if (isset($_POST['id_tabella'])) {
        //ottengo i dati relativi ad una determinata tabella
        $result = $tprezzi->getTabellaById($_POST['id_tabella']);
        unset($_POST['id_tabella']);
        echo json_encode($result);
    }
    if (isset($_POST['id_tabella_2']) && isset($_POST['row']) && isset($_POST['col'])) {
        $result = $tprezzi->getPrezzo($_POST['id_tabella_2'], $_POST['row'], $_POST['col']);
        unset($_POST['col']);
        unset($_POST['row']);
        unset($_POST['id_tabella_2']);
        echo json_encode($result);
    }
    if (isset($_POST['preventivo'])) {
        global $DIR_TEMP_IMG_PREVENTIVI;
        global $DIR_TEMP_IMG_PREVENTIVI_THUMB;
        global $DIR_IMG_PREVENTIVI;
        global $DIR_IMG_PREVENTIVI_THUMB;
        global $URL_IMG_PREVENTIVI;
        $pController = new PreventivoController();
        $preventivo = $_POST['preventivo'];
        $p = new Preventivo();
        $p = $pController->convertToPreventivo($preventivo);
        //1. salvare i dati nel database
        //2. comporre il pdf
        //3. creare la mail e allegarci il pdf
        $result = array();
        //1. salvo il preventivo nel database
        $idPreventivo = $pController->savePreventivo($p);
        if ($idPreventivo != false) {
            $result['salvato'] = true;
            //1a. Salvo le immagini del preventivo nel DB
            $temp = $p->getFoto();
            //ho ottenuto un array di nomi di foto
            //potrebbero anche non esserci foto, in quel caso $temp = null
            if ($temp != null) {
                foreach ($temp as $item) {
                    $foto = new Foto();
                    $foto->setIdPreventivo($idPreventivo);
                    $foto->setNomeFoto($item);
                    //salvo la voto
                    if ($pController->saveFoto($foto) != false) {
                        //la foto è stata salvata.
                        //devo copiare la foto dalla cartella temporanea alla cartella definitiva
                        copy($DIR_TEMP_IMG_PREVENTIVI . $item, $DIR_IMG_PREVENTIVI . $item);
                        copy($DIR_TEMP_IMG_PREVENTIVI_THUMB . $item, $DIR_IMG_PREVENTIVI_THUMB . $item);
                        //devo eliminare la foto e il thumb dalla cartella temporanea
                        unlink($DIR_TEMP_IMG_PREVENTIVI_THUMB . $item);
                        unlink($DIR_TEMP_IMG_PREVENTIVI . $item);
                    }
                }
            }
            //2. compongo il pdf
            $pdf = $pController->createPDF($idPreventivo);
            if ($pdf['url'] != false) {
                //inserisco l'url del pdf nel record del preventivo appena salvato
                $pController->updateUrlPdf($idPreventivo, $pdf['url']);
                $result['pdf'] = $pdf['url'];
                //3. Invio della mail
                if ($pController->sendEmailtoAdmin($idPreventivo, $pdf['dir'])) {
                    $result['mail'] = true;
                } else {
                    $result['mail'] = false;
                }
            } else {
                $result['pdf'] = false;
            }
        } else {
            $result['salvato'] = false;
        }
        echo json_encode($result);
    }
    //ascoltatore sul cancella file
    if (isset($_POST['nomeFile'])) {
        global $DIR_TEMP_IMG_PREVENTIVI;
        global $DIR_TEMP_IMG_PREVENTIVI_THUMB;
        //rimuovo il thumbnail
        unlink($DIR_TEMP_IMG_PREVENTIVI_THUMB . $_POST['nomeFile']);
        unlink($DIR_TEMP_IMG_PREVENTIVI . $_POST['nomeFile']);
    }
}
 private function printTableInfissi($infissi)
 {
     global $URL_IMG;
     $tPrezzi = new TabellaPrezziController();
     $cMaggiorazione = new MaggiorazioneController();
     $startLine = 85;
     $count = 1;
     foreach ($infissi as $item) {
         //L'infisso viene pubblicato in una pagina nuova in quanto oltre ai dati
         //c'è anche l'immagine delle quote
         $this->AddPage();
         $array = array();
         $i = new Infisso();
         $i = $item;
         $array['count'] = $count;
         $array['Tipo infisso'] = $i->getTipo();
         if ($i->getNAnte() == 0) {
             $array['Numero Ante'] = 'inferriata fissa';
         } else {
             $array['Numero Ante'] = $i->getNAnte();
         }
         $array['Infisso'] = $tPrezzi->getNomeInfisso($i->getIdInfisso());
         $array['Larghezza'] = $i->getLunghezza() . ' mm';
         $array['Altezza'] = $i->getAltezza() . ' mm';
         $apertura = $i->getApertura();
         if ($i->getApertura() == 'interna') {
             $apertura = "Interna, telaio e anta in tubolare 40x30 mm";
         }
         $array['Apertura (vista interna)'] = str_replace('-', ' ', $apertura);
         $antaPrincipale = "";
         if ($i->getNAnte() == 0) {
             $antaPrincipale = "Nessuna";
         } else {
             switch ($i->getAntaPrincipale()) {
                 case 'D':
                     $antaPrincipale = "Destra";
                     break;
                 case 'DC':
                     $antaPrincipale = "Centrale Destra";
                     break;
                 case 'S':
                     $antaPrincipale = "Sinistra";
                     break;
                 case 'SC':
                     $antaPrincipale = "Centrale Sinistra";
                     break;
                 default:
                     $antaPrincipale = "Centrale";
                     break;
             }
         }
         $array['Anta principale'] = $antaPrincipale;
         $posizioneSerratura = "";
         $manoAperutra = "";
         if ($i->getNAnte() == 0) {
             $posizioneSerratura = "Nessuna";
             $manoAperutra = "Nessuna";
         } else {
             switch ($i->getPosizioneSerratura()) {
                 case 'S':
                     $posizioneSerratura = "Sinistra";
                     if ($i->getApertura() == 'interna') {
                         $manoAperutra = "Destra a tirare";
                     } else {
                         if ($i->getApertura() == 'esterna') {
                             $manoAperutra = "Destra a spingere";
                         }
                     }
                     break;
                 case 'D':
                     $posizioneSerratura = "Destra";
                     if ($i->getApertura() == 'interna') {
                         $manoAperutra = "Sinistra a tirare";
                     } else {
                         if ($i->getApertura() == 'esterna') {
                             $manoAperutra = "Sinistra a spingere";
                         }
                     }
                     break;
                 default:
                     $posizioneSerratura = "Nessuna";
                     break;
             }
         }
         //$array['Posizione serratura'] = $posizioneSerratura;
         $array['Mano d\'apertura '] = $manoAperutra;
         $array['Barra'] = str_replace('-', ' ', $i->getBarra());
         if ($i->getNAnte() == 0) {
             $array['Serratura'] = 'Nessuna';
         } else {
             if ($i->getSerratura() == 'cilindro') {
                 $array['Serratura'] = 'Solo cilindro, telaio e anta in tubolare 40x30 mm';
             } else {
                 $array['Serratura'] = 'A leva con maniglia in pvc';
             }
         }
         $array['Nodo'] = 'Nodo ' . $i->getNodo();
         $array['Colore'] = str_replace('-', ' ', $i->getColore());
         $array['Trattamento'] = $i->getVerniciatura();
         $array['Cerniera'] = str_replace('-', ' ', $i->getCerniera());
         //maggiorazioni
         $maggiorazioni = $i->getMaggiorazioni();
         $count_maggiorazioni = 1;
         foreach ($maggiorazioni as $m) {
             $array['Maggiorazione ' . $count_maggiorazioni] = str_replace('€', EURO, $cMaggiorazione->getInfoMaggiorazione($m));
             $count_maggiorazioni++;
         }
         $array['Listino'] = EURO . ' ' . $i->getSpesaInfisso();
         $array['Numero Pezzi'] = $i->getNInfisso();
         if ($count % 2 == 0) {
         }
         $this->printPdfTable($array);
         //stampo una linea
         $this->Ln(3);
         $this->Cell(180, 0, '', 1);
         $this->Ln(3);
         $x = $this->GetX() + 15;
         $y = $this->GetY() + 15;
         //STAMPO L'IMMAGINE DELLE QUOTE
         //modifica: struttura più complessa
         $width = 0;
         $height = 0;
         $urlInfisso = "";
         //indico le dimensioni e il tipo di infisso
         if ($i->getTipo() == 'Finestra') {
             $width = 104;
             //$height = 150;
             $urlInfisso .= 'F';
         } else {
             //è una portafinestra
             $width = 104;
             //$height = 70;
             $urlInfisso .= 'P';
         }
         //indico il numero di ante
         $urlInfisso .= $i->getNAnte();
         //indico l'anta principale
         switch ($i->getAntaPrincipale()) {
             case 'D':
                 $urlInfisso .= 'D';
                 break;
             case 'DC':
                 $urlInfisso .= 'DC';
                 break;
             case 'S':
                 $urlInfisso .= 'S';
                 break;
             case 'SC':
                 $urlInfisso .= 'SC';
                 break;
             default:
                 $urlInfisso .= 'C';
                 break;
         }
         //indico la posizione della serratura
         switch ($i->getPosizioneSerratura()) {
             case 'S':
                 $urlInfisso .= 'S';
                 break;
             case 'D':
                 $urlInfisso .= 'D';
                 break;
             default:
                 break;
         }
         $urlInfisso = strtoupper($urlInfisso) . '.png';
         $this->Image($URL_IMG . 'pdf/' . $urlInfisso, $x, $y, $width);
         //Inserisco il colore
         $x2 = $this->GetX() + 130;
         $y2 = $this->GetY() + 25;
         if (strpos($i->getColore(), 'ral') !== false) {
             //RAL
             $temp = explode(' ', $i->getColore());
             if (count($temp) > 0) {
                 $ral = str_replace('ral-', '', $temp[0]);
                 $r = 255;
                 $g = 255;
                 $b = 255;
                 switch ($ral) {
                     case '9016':
                         $r = 241;
                         $g = 240;
                         $b = 234;
                         break;
                     case '9010':
                         $r = 241;
                         $g = 236;
                         $b = 225;
                         break;
                     case '7035':
                         $r = 197;
                         $g = 199;
                         $b = 196;
                         break;
                     case '7040':
                         $r = 152;
                         $g = 158;
                         $b = 161;
                         break;
                     case '9007':
                         $r = 135;
                         $g = 133;
                         $b = 129;
                         break;
                     case '9006':
                         $r = 161;
                         $g = 161;
                         $b = 160;
                         break;
                     case '7016':
                         $r = 56;
                         $g = 62;
                         $b = 66;
                         break;
                     case '7030':
                         $r = 146;
                         $g = 142;
                         $b = 133;
                         break;
                     case '8028':
                         $r = 81;
                         $g = 58;
                         $b = 42;
                         break;
                     case '6009':
                         $r = 39;
                         $g = 53;
                         $b = 42;
                         break;
                     case '8003':
                         $r = 126;
                         $g = 75;
                         $b = 38;
                         break;
                     case '8001':
                         $r = 157;
                         $g = 98;
                         $b = 43;
                         break;
                     case '6005':
                         $r = 17;
                         $g = 66;
                         $b = 50;
                         break;
                     case '3003':
                         $r = 134;
                         $g = 26;
                         $b = 34;
                         break;
                     case '1013':
                         $r = 227;
                         $g = 217;
                         $b = 198;
                         break;
                     case '9005':
                         $r = 14;
                         $g = 14;
                         $b = 16;
                         break;
                 }
                 //$this->Text(($x2-10), ($y2+25), $r.' '.$g.' '.$b);
                 $this->SetFillColor($r, $g, $b);
                 $this->Rect($x2, $y2, 50, 30, 'DF');
                 $this->Text($x2, $y2 + 40, str_replace('-', ' ', $i->getColore()));
             }
         } else {
             if ($i->getColore() == 'solo zincatura') {
                 //solo zincatura
             } else {
                 //micaceo
                 $urlColore = str_replace(' ', '-', strtolower($i->getColore()));
                 $this->Image($URL_IMG . 'pdf/' . $urlColore . '.jpg', $x2, $y2, 50);
                 $this->Text($x2, $y2 + 40, str_replace('-', ' ', $i->getColore()));
             }
         }
         $this->SetFont('Arial', 'B', 14);
         if ($i->getTipo() == 'Finestra') {
             //stampo la larghezza
             $this->Text($x + 40, $y + 60, 'L: ' . $i->getLunghezza() . ' mm');
             //stampo l'altezza
             $this->Text($x - 15, $y + 25, 'H: ' . $i->getAltezza() . ' mm');
             $this->SetFont('Arial', '', 18);
             $this->Text($x + 30, $y + 70, 'MISURE FORO MURO');
         } else {
             //stampo la larghezza
             $this->Text($x + 40, $y + 80, 'L: ' . $i->getLunghezza() . ' mm');
             //stampo l'altezza
             $this->Text($x - 15, $y + 35, 'H: ' . $i->getAltezza() . ' mm');
             $this->SetFont('Arial', '', 18);
             $this->Text($x + 30, $y + 90, 'MISURE FORO MURO');
         }
         $count++;
     }
 }