|
|
@@ -23,6 +23,10 @@ use App\Models\ReportDataVeicoli;
|
|
|
use App\Models\Vehicle;
|
|
|
use \Illuminate\Support\Facades\DB;
|
|
|
use \Illuminate\Support\Facades\Log;
|
|
|
+use setasign\Fpdi\Fpdi;
|
|
|
+use Smalot\PdfParser\Parser;
|
|
|
+use Illuminate\Http\Request;
|
|
|
+
|
|
|
|
|
|
class Report extends Component
|
|
|
{
|
|
|
@@ -1227,8 +1231,7 @@ class Report extends Component
|
|
|
|
|
|
$targa = $this->vei_targa;
|
|
|
|
|
|
- try
|
|
|
- {
|
|
|
+ try {
|
|
|
Log::info("veicolo con targa: " . $targa);
|
|
|
|
|
|
$wd = "dettaglioAutoveicoloBase";
|
|
|
@@ -1296,14 +1299,10 @@ class Report extends Component
|
|
|
$this->vei_carta_circolazione_rilasciata_il = @$obj->DatiAmministrativiVeicolo[0]->DataEmissioneDocumento;
|
|
|
$this->vei_cilindrata = @$obj->DatiTecniciVeicolo->CilindrataInCentimetriCubi;
|
|
|
$this->vei_peso_complessivo = @$obj->DatiTecniciVeicolo->TaraInKG;
|
|
|
- }
|
|
|
- catch(\SoapFault $fault)
|
|
|
- {
|
|
|
+ } catch (\SoapFault $fault) {
|
|
|
$this->loadTarga = $fault->getMessage();
|
|
|
}
|
|
|
- }
|
|
|
- catch(\Exception $ex)
|
|
|
- {
|
|
|
+ } catch (\Exception $ex) {
|
|
|
Log::error($ex->getMessage());
|
|
|
}
|
|
|
|
|
|
@@ -1388,16 +1387,12 @@ class Report extends Component
|
|
|
'</xmp><br/><br/> Error Message : <br/>',
|
|
|
$fault->getMessage();
|
|
|
}
|
|
|
- }
|
|
|
- catch(\SoapFault $ex)
|
|
|
- {
|
|
|
+ } catch (\SoapFault $ex) {
|
|
|
Log::error($ex->getMessage());
|
|
|
}
|
|
|
|
|
|
$this->emit('hideLoading', 'btPatente');
|
|
|
-
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
protected function handleMCTCError($response)
|
|
|
@@ -1408,7 +1403,8 @@ class Report extends Component
|
|
|
session()->flash('error', 'Errore di validazione numero di caratteri errato');
|
|
|
} else {
|
|
|
session()->flash('error', $response->errore->descrizioneErrore);
|
|
|
- } return false;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
}
|
|
|
return true;
|
|
|
}
|
|
|
@@ -1499,4 +1495,110 @@ class Report extends Component
|
|
|
$this->addError('verificatosi_in_data', 'Il campo Verificatosi in data deve essere nel formato corretto.');
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public function downloadTemplate()
|
|
|
+ {
|
|
|
+ $pdf = new Fpdi();
|
|
|
+ $pdf->AddPage();
|
|
|
+ $pdf->SetFont('Arial', 'B', 16);
|
|
|
+
|
|
|
+ $pdf->Cell(0, 10, 'Verbale Template', 0, 1, 'C');
|
|
|
+ $pdf->Ln(10);
|
|
|
+
|
|
|
+ $pdf->SetFont('Arial', '', 12);
|
|
|
+
|
|
|
+ $fields = [
|
|
|
+ 'Localita' => '',
|
|
|
+ 'Indirizzo' => '',
|
|
|
+ 'Verificatosi in data' => '',
|
|
|
+ 'Ora incidente' => '',
|
|
|
+ 'Data segnalazione' => '',
|
|
|
+ 'Ora segnalazione' => '',
|
|
|
+ 'Ora intervento' => '',
|
|
|
+ 'Tipo di rilievo' => '',
|
|
|
+ 'Localizzazione incidente' => '',
|
|
|
+ 'Nomenclatura strada' => '',
|
|
|
+ 'Condizioni atmosferiche' => '',
|
|
|
+ 'Visibilita' => '',
|
|
|
+ 'Pavimentazione strada' => '',
|
|
|
+ 'Fondo stradale' => '',
|
|
|
+ 'Particolarita strada' => '',
|
|
|
+ 'Condizione strada' => ''
|
|
|
+ ];
|
|
|
+
|
|
|
+ foreach ($fields as $label => $value) {
|
|
|
+ $pdf->Cell(80, 10, $label . ':', 0);
|
|
|
+ $pdf->Cell(0, 10, $value, 0);
|
|
|
+ $pdf->Ln(15);
|
|
|
+ }
|
|
|
+
|
|
|
+ $pdf->SetFont('Arial', 'I', 10);
|
|
|
+ $pdf->Ln(10);
|
|
|
+ $pdf->MultiCell(0, 5, 'Istruzioni: Compilare tutti i campi. Per le caselle di controllo, segnare con una X l\'opzione appropriata.');
|
|
|
+
|
|
|
+ $pdf->Output('D', 'verbale_template.pdf');
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public function uploadVerbale(Request $request)
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ $file = $request->file('verbale_file');
|
|
|
+ $parser = new Parser();
|
|
|
+ $pdf = $parser->parseFile($file->getPathname());
|
|
|
+
|
|
|
+ $text = $pdf->getText();
|
|
|
+ $lines = explode("\n", $text);
|
|
|
+ $data = [];
|
|
|
+
|
|
|
+ foreach ($lines as $line) {
|
|
|
+ if (strpos($line, ':') !== false) {
|
|
|
+ list($key, $value) = explode(':', $line, 2);
|
|
|
+ $data[trim($key)] = trim($value);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $formData = $this->mapPdfDataToForm($data);
|
|
|
+
|
|
|
+ return response()->json([
|
|
|
+ 'success' => true,
|
|
|
+ 'data' => $formData
|
|
|
+ ]);
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return response()->json([
|
|
|
+ 'success' => false,
|
|
|
+ 'message' => 'Error processing PDF: ' . $e->getMessage()
|
|
|
+ ], 422);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private function mapPdfDataToForm($data)
|
|
|
+ {
|
|
|
+ return [
|
|
|
+ 'localita_uno' => $data['Localita'] ?? '',
|
|
|
+ 'localita_due' => $data['Indirizzo'] ?? '',
|
|
|
+ 'verificatosi_in_data' => $this->formatDate($data['Verificatosi in data'] ?? ''),
|
|
|
+ 'verificatosi_in_data_ora' => $this->extractHours($data['Ora incidente'] ?? ''),
|
|
|
+ 'verificatosi_in_data_minuti' => $this->extractMinutes($data['Ora incidente'] ?? ''),
|
|
|
+ 'segnalazione_data' => $this->formatDate($data['Data segnalazione'] ?? ''),
|
|
|
+ 'segnalazione_ora' => $this->extractHours($data['Ora segnalazione'] ?? ''),
|
|
|
+ 'segnalazione_minuti' => $this->extractMinutes($data['Ora segnalazione'] ?? ''),
|
|
|
+ 'sinistro_ora' => $this->extractHours($data['Ora intervento'] ?? ''),
|
|
|
+ 'sinistro_minuti' => $this->extractMinutes($data['Ora intervento'] ?? ''),
|
|
|
+ 'rilievi_id' => $data['Tipo di rilievo'] ?? '',
|
|
|
+ 'localizzazione_incidente' => $this->mapLocalizzazione($data['Localizzazione incidente'] ?? ''),
|
|
|
+ 'nomenclatura_strada' => $data['Nomenclatura strada'] ?? '',
|
|
|
+ 'condizioni_atmosferiche' => $data['Condizioni atmosferiche'] ?? '',
|
|
|
+ 'visibilita' => $this->mapVisibilita($data['Visibilita'] ?? ''),
|
|
|
+ 'pavimentazione' => $data['Pavimentazione strada'] ?? '',
|
|
|
+ 'fondo_stradale' => $data['Fondo stradale'] ?? '',
|
|
|
+ 'particolarita_strada' => $data['Particolarita strada'] ?? '',
|
|
|
+ 'condizione_strada' => $data['Condizione strada'] ?? ''
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ public function showUploadForm()
|
|
|
+ {
|
|
|
+ return view('livewire/upload-verbale');
|
|
|
+ }
|
|
|
}
|