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++; } }