Luca Parisio 1 month ago
parent
commit
95acf0e9d9
22 changed files with 1078 additions and 376 deletions
  1. 124 92
      app/Http/Livewire/Istat.php
  2. 191 141
      app/Http/Livewire/Report.php
  3. 23 3
      app/Http/Livewire/Traits/HasAllegato.php
  4. 19 1
      app/Http/Livewire/Traits/HasAnagrafica.php
  5. 40 0
      app/Http/Livewire/Traits/HasVeicoli.php
  6. 1 0
      app/Models/Report.php
  7. 2 0
      app/Models/ReportAllegatiGallery.php
  8. 19 1
      app/Models/ReportDataVeicoli.php
  9. 34 0
      database/migrations/2025_10_24_100000_add_filds_to_fcf_reports_allegati_galleries_table.php
  10. 47 0
      database/migrations/2025_10_24_170000_add_more_columns_to_fcf_reports_report_data_veicoli_table.php
  11. 24 0
      database/migrations/2025_11_28_170000_add_organo_to_fcf_reports_table.php
  12. 25 0
      database/migrations/2025_12_01_164500_add_fields_pneumatici_to_fcf_reports_report_data_veicoli_table.php
  13. 33 0
      resources/views/components/report/allegati/allegati-modal.blade.php
  14. 11 0
      resources/views/components/report/segnaletica/segnaletica.blade.php
  15. 1 1
      resources/views/components/report/veicoli/accordion/accertamenti-passeggeri-accordion.blade.php
  16. 30 2
      resources/views/components/report/veicoli/accordion/osservazioni-veicolo-accordion.blade.php
  17. 207 0
      resources/views/components/report/veicoli/accordion/veicolo/veicolo-danni-circostanze.blade.php
  18. 12 4
      resources/views/components/report/veicoli/veicolo-modal.blade.php
  19. 26 0
      resources/views/components/verbale/stato-veicolo/index.blade.php
  20. 130 128
      resources/views/components/verbale/veicolo/proprietario.blade.php
  21. 2 1
      resources/views/layouts/app.blade.php
  22. 77 2
      resources/views/livewire/report.blade.php

+ 124 - 92
app/Http/Livewire/Istat.php

@@ -224,6 +224,7 @@ class Istat extends Component
             $sectionCounts = [];
             foreach ($items as $item) {
                 try {
+                    
                     Log::info('Item: ' . $item->id);
                     $report = \App\Models\Report::findOrFail($item->id);
 
@@ -567,22 +568,35 @@ class Istat extends Component
                                 elseif ($data_veicolo["drug_test"] && $data_veicolo["drug_test_esito"] == Istat::ESITO_POSITIVO)
                                     $stato_psico_fisico = '94';
 
-                                $conducente = Anagrafica::findOrFail($data_veicolo["conducenti"]);
+                                try
+                                {
+                                    $conducente = Anagrafica::findOrFail($data_veicolo["conducenti"]);
 
-                                $eta_conducente = '00';
-                                if ($conducente->birth_date != '' && $report->verificatosi_in_data != '') {
-                                    $eta_conducente = 0;
-                                    if ($eta_conducente > 100 || $eta_conducente < 0) $eta_conducente = 0;
-                                    $eta_conducente = str_pad($eta_conducente, 2, '0', STR_PAD_LEFT);
+                                    $eta_conducente = '00';
+                                    if ($conducente->birth_date != '' && $report->verificatosi_in_data != '') {
+                                        $eta_conducente = 0;
+                                        if ($eta_conducente > 100 || $eta_conducente < 0) $eta_conducente = 0;
+                                        $eta_conducente = str_pad($eta_conducente, 2, '0', STR_PAD_LEFT);
+                                    }
+                                    $v_data['conducente_passeggeri'] .= $eta_conducente;
+                                    $v_data['conducente_passeggeri'] .= $conducente->gender == 'F' ? '2' : '1';
+
+                                    $details = array(
+                                        'firstname' => $conducente->firstname,
+                                        'lastname' => $conducente->lastname,
+                                        'ospedale' => $data_veicolo["infortunato_ospedale"],
+                                    );
+                                } catch (\Exception $e) {
+                                    $v_data['conducente_passeggeri'] .= '00';
+                                    $v_data['conducente_passeggeri'] .= ' ';
+
+                                    $details = array(
+                                        'firstname' => '',
+                                        'lastname' => '',
+                                        'ospedale' => '0',
+                                    );
+                                    Log::error('non trovato conducente ' . $data_veicolo["conducenti"] . ': ' . $report->id . " -- " . $e->getMessage());
                                 }
-                                $v_data['conducente_passeggeri'] .= $eta_conducente;
-                                $v_data['conducente_passeggeri'] .= $conducente->gender == 'F' ? '2' : '1';
-
-                                $details = array(
-                                    'firstname' => $conducente->firstname,
-                                    'lastname' => $conducente->lastname,
-                                    'ospedale' => $data_veicolo["infortunato_ospedale"],
-                                );
 
                                 switch ($data_veicolo["infortunato"]) {
                                     case Istat::INFORTUNATO_DECEDUTO_30GG:
@@ -639,6 +653,8 @@ class Istat extends Component
                                         break;
                                 }
 
+                                Log::error('QUA 1');
+
                                 $v_data['conducente_passeggeri'] .= $patente;
 
                                 $patente_rilasciata_il = $data_veicolo["conducente_patente_rilasciata_il"];
@@ -658,40 +674,45 @@ class Istat extends Component
                                             $passeggero_infortunato = $datiPasseggeri[$j]["infortunato"];
                                             if ($passeggero_infortunato != Istat::INFORTUNATO_INCOLUME) {
 
-                                                $passeggero_anagrafica = Anagrafica::findOrFail($passeggero);
-
-                                                $eta_passeggero = '00';
-                                                if ($passeggero_anagrafica->birth_date && $report->verificatosi_in_data) {
-                                                    $eta_passeggero = 0;
-                                                    DateHelper::calculateAge($passeggero_anagrafica->birth_date, $report->verificatosi_in_data);
-                                                    if ($eta_passeggero == 0) $eta_passeggero = 1;
-                                                    elseif ($eta_passeggero > 100 || $eta_passeggero < 0) $eta_passeggero = 0;
-                                                    $eta_passeggero = str_pad($eta_passeggero, 2, '0', STR_PAD_LEFT);
-                                                }
-
-                                                $passeggero_data = sprintf(
-                                                    '%s%s%s',
-                                                    $passeggero_infortunato == Istat::INFORTUNATO_FERITO ? '2' : '1',
-                                                    $eta_passeggero,
-                                                    $passeggero_anagrafica->gender == 'F' ? '4' : '3'
-                                                );
-
-                                                $details = array(
-                                                    'firstname' => $passeggero_anagrafica->firstname,
-                                                    'lastname' => $passeggero_anagrafica->lastname,
-                                                    'ospedale' => $datiPasseggeri[$j]["infortunato_ospedale"]
-                                                );
-
-                                                switch ($passeggero_infortunato) {
-                                                    case Istat::INFORTUNATO_DECEDUTO_30GG:
-                                                        $deceduti_30gg[] = $details;
-                                                        break;
-                                                    case Istat::INFORTUNATO_DECEDUTO_24H:
-                                                        $deceduti_24h[] = $details;
-                                                        break;
-                                                    case Istat::INFORTUNATO_FERITO:
-                                                        $feriti[] = $details;
-                                                        break;
+                                                try{
+
+                                                    $passeggero_anagrafica = Anagrafica::findOrFail($passeggero);
+
+                                                    $eta_passeggero = '00';
+                                                    if ($passeggero_anagrafica->birth_date && $report->verificatosi_in_data) {
+                                                        $eta_passeggero = 0;
+                                                        DateHelper::calculateAge($passeggero_anagrafica->birth_date, $report->verificatosi_in_data);
+                                                        if ($eta_passeggero == 0) $eta_passeggero = 1;
+                                                        elseif ($eta_passeggero > 100 || $eta_passeggero < 0) $eta_passeggero = 0;
+                                                        $eta_passeggero = str_pad($eta_passeggero, 2, '0', STR_PAD_LEFT);
+                                                    }
+
+                                                    $passeggero_data = sprintf(
+                                                        '%s%s%s',
+                                                        $passeggero_infortunato == Istat::INFORTUNATO_FERITO ? '2' : '1',
+                                                        $eta_passeggero,
+                                                        $passeggero_anagrafica->gender == 'F' ? '4' : '3'
+                                                    );
+
+                                                    $details = array(
+                                                        'firstname' => $passeggero_anagrafica->firstname,
+                                                        'lastname' => $passeggero_anagrafica->lastname,
+                                                        'ospedale' => $datiPasseggeri[$j]["infortunato_ospedale"]
+                                                    );
+
+                                                    switch ($passeggero_infortunato) {
+                                                        case Istat::INFORTUNATO_DECEDUTO_30GG:
+                                                            $deceduti_30gg[] = $details;
+                                                            break;
+                                                        case Istat::INFORTUNATO_DECEDUTO_24H:
+                                                            $deceduti_24h[] = $details;
+                                                            break;
+                                                        case Istat::INFORTUNATO_FERITO:
+                                                            $feriti[] = $details;
+                                                            break;
+                                                    }
+                                                } catch (\Exception $e) {
+                                                    Log::error('non trovato passeggero ' . $passeggero . ': ' . $e->getMessage());
                                                 }
                                             }
                                         }
@@ -702,10 +723,12 @@ class Istat extends Component
 
                                 $v_data['conducente_passeggeri'] .= str_repeat(' ', 8);
 
-                                $v_data['cittadinanza_conducente'] .= $conducente->nazionalita == 0 ? '1' : '2';
+                                Log::error('QUA 2');
+
+                                $v_data['cittadinanza_conducente'] .= @$conducente->nazionalita == 0 ? '1' : '2';
                                 $country_id = 106;
-                                if ($conducente->nazionalita != 0)
-                                    $country_id = $conducente->nazione_straniera;
+                                if (@$conducente->nazionalita != 0)
+                                    $country_id = @$conducente->nazione_straniera;
                                 if (!$country_id) $v_data['cittadinanza_conducente'] .= str_repeat(' ', 33);
                                 else {
                                     $country = \App\Models\LocationCountry::findOrFail($country_id);
@@ -733,6 +756,7 @@ class Istat extends Component
                             }
                         }
                         $p_data = '';
+                        Log::error('QUA 3');
 
                         $datiPedoni = ReportDataPedoni::where('report_id', $report->id)->get()->toArray();
                         for ($j = 0; $j < 4; $j++) {
@@ -745,49 +769,57 @@ class Istat extends Component
                                 if ($pedone) {
                                     $pedone_infortunato = $infortunato;
                                     if ($pedone_infortunato != Istat::INFORTUNATO_INCOLUME) {
-                                        $pedone_anagrafica = new Anagrafica([$pedone]);
-
-                                        $eta_pedone = '00';
-                                        if (DateHelper::filterDate($pedone_anagrafica->get('birth_date')) && DateHelper::filterDate($report->get('verificatosi_in_data'))) {
-                                            $eta_pedone = DateHelper::calculateAge($pedone_anagrafica->get('birth_date'), $report->get('verificatosi_in_data'));
-                                            if ($eta_pedone == 0) $eta_pedone = 1;
-                                            elseif ($eta_pedone > 100 || $eta_pedone < 0) $eta_pedone = 0;
-                                            $eta_pedone = str_pad($eta_pedone, 2, '0', STR_PAD_LEFT);
-                                        }
 
-                                        if ($pedone_infortunato == Istat::INFORTUNATO_FERITO)
-                                            $pedone_data = sprintf(
-                                                '%s%s%s',
-                                                str_repeat(' ', 3),
-                                                $pedone_anagrafica->get('gender') == 'F' ? '4' : '3',
-                                                $eta_pedone
-                                            );
-                                        else
-                                            $pedone_data = sprintf(
-                                                '%s%s%s',
-                                                $pedone_anagrafica->get('gender') == 'F' ? '2' : '1',
-                                                $eta_pedone,
-                                                str_repeat(' ', 3)
+                                        Log::error('QUA 4');
+
+                                        try{
+
+                                            $pedone_anagrafica = new Anagrafica([$pedone]);
+
+                                            $eta_pedone = '00';
+                                            if (DateHelper::filterDate($pedone_anagrafica->get('birth_date')) && DateHelper::filterDate($report->get('verificatosi_in_data'))) {
+                                                $eta_pedone = DateHelper::calculateAge($pedone_anagrafica->get('birth_date'), $report->get('verificatosi_in_data'));
+                                                if ($eta_pedone == 0) $eta_pedone = 1;
+                                                elseif ($eta_pedone > 100 || $eta_pedone < 0) $eta_pedone = 0;
+                                                $eta_pedone = str_pad($eta_pedone, 2, '0', STR_PAD_LEFT);
+                                            }
+
+                                            if ($pedone_infortunato == Istat::INFORTUNATO_FERITO)
+                                                $pedone_data = sprintf(
+                                                    '%s%s%s',
+                                                    str_repeat(' ', 3),
+                                                    $pedone_anagrafica->get('gender') == 'F' ? '4' : '3',
+                                                    $eta_pedone
+                                                );
+                                            else
+                                                $pedone_data = sprintf(
+                                                    '%s%s%s',
+                                                    $pedone_anagrafica->get('gender') == 'F' ? '2' : '1',
+                                                    $eta_pedone,
+                                                    str_repeat(' ', 3)
+                                                );
+
+                                            $details = array(
+                                                'firstname' => $pedone_anagrafica->get('firstname'),
+                                                'lastname' => $pedone_anagrafica->get('lastname'),
+                                                'ospedale' => ReportDataPedoni::where('report_id', $report->id)
+                                                    ->where('progressive', $j)
+                                                    ->value('infortunato_ospedale')
                                             );
 
-                                        $details = array(
-                                            'firstname' => $pedone_anagrafica->get('firstname'),
-                                            'lastname' => $pedone_anagrafica->get('lastname'),
-                                            'ospedale' => ReportDataPedoni::where('report_id', $report->id)
-                                                ->where('progressive', $j)
-                                                ->value('infortunato_ospedale')
-                                        );
-
-                                        switch ($pedone_infortunato) {
-                                            case Istat::INFORTUNATO_DECEDUTO_30GG:
-                                                $deceduti_30gg[] = $details;
-                                                break;
-                                            case Istat::INFORTUNATO_DECEDUTO_24H:
-                                                $deceduti_24h[] = $details;
-                                                break;
-                                            case Istat::INFORTUNATO_FERITO:
-                                                $feriti[] = $details;
-                                                break;
+                                            switch ($pedone_infortunato) {
+                                                case Istat::INFORTUNATO_DECEDUTO_30GG:
+                                                    $deceduti_30gg[] = $details;
+                                                    break;
+                                                case Istat::INFORTUNATO_DECEDUTO_24H:
+                                                    $deceduti_24h[] = $details;
+                                                    break;
+                                                case Istat::INFORTUNATO_FERITO:
+                                                    $feriti[] = $details;
+                                                    break;
+                                            }
+                                        } catch (\Exception $e) {
+                                            Log::error('non trovato pedone ' . $pedone . ': ' . $e->getMessage());
                                         }
                                     }
                                 }
@@ -796,7 +828,6 @@ class Istat extends Component
                             $p_data .= $pedone_data;
                         }
 
-
                         $v_data['tipo'] = str_pad($v_data['tipo'], 6, ' ', STR_PAD_RIGHT);
                         $item_data .= $v_data['tipo'];
                         $item_data .= str_repeat(' ', 24);
@@ -822,6 +853,7 @@ class Istat extends Component
                         $sectionCounts['Section 21-30'] = $sectionLength;
                     }
 
+                    
                     try {
                         //31-40
                         $sectionStart = strlen($item_data);

+ 191 - 141
app/Http/Livewire/Report.php

@@ -52,7 +52,20 @@ class Report extends Component
         array('id' => 3, 'name' => 'Segnaletica orizzontale'),
         array('id' => 4, 'name' => 'Segnaletica verticale e orizzontale'),
         array('id' => 5, 'name' => 'Segnaletica temporanea di cantiere'),
+        array('id' => 6, 'name' => 'Segnaletica verticale assente'),
+        array('id' => 7, 'name' => 'Segnaletica orizzontale assente'),
+        array('id' => 8, 'name' => 'Segnaletica di messa in sicurezza provvisoria'),
+        
     );
+
+    public $organi = array(
+        'Comando', 
+        'Vigili del Fuoco', 
+        'Carabinieri', 
+        'Polizia di Stato', 
+        'Ufficio Tecnico'
+    );
+
     public $linee = array(
         array('id' => 4, 'name' => 'Assente'),
         array('id' => 1, 'name' => 'Continua'),
@@ -150,6 +163,7 @@ class Report extends Component
         $traffico;
 
     public $segnaletica,
+        $organo,
         $segnaletica_verticale_1_via,
         $segnaletica_verticale_1_altro,
         $segnaletica_verticale_1_limite_velocita,
@@ -416,6 +430,7 @@ class Report extends Component
         $this->segnaletica_orizzontale_3 = [];
         $this->segnaletica_orizzontale_4 = [];
         $this->segnaletica = '';
+        $this->organo = '';
         $this->segnaletica_verticale_1_via = '';
         $this->segnaletica_verticale_1_altro = '';
         $this->segnaletica_verticale_1_limite_velocita = '';
@@ -475,6 +490,8 @@ class Report extends Component
         $this->allegatoId = 0;
         $this->allegatoType = 0;
         $this->allegatoGallery = 0;
+        $this->allegatoFotoSinistri = 0;
+        $this->allegatoDidascalia = '';
         $this->allegatoName = '';
         $this->allegatoVisible = false;
         $this->allegatoFiles = '';
@@ -822,6 +839,7 @@ class Report extends Component
                 $this->segnaletica_orizzontale_3 = \App\Models\ReportSegnaleticaOrizzontale3::where('report_id', $idReport)->pluck('segnaletica_orizzontale_id');
                 $this->segnaletica_orizzontale_4 = \App\Models\ReportSegnaleticaOrizzontale4::where('report_id', $idReport)->pluck('segnaletica_orizzontale_id');
                 $this->segnaletica = $record->segnaletica;
+                $this->organo = $record->organo;
                 $this->segnaletica_verticale_1_via = $record->segnaletica_verticale_1_via;
                 $this->segnaletica_verticale_1_altro = $record->segnaletica_verticale_1_altro;
                 $this->segnaletica_verticale_1_limite_velocita = $record->segnaletica_verticale_1_limite_velocita;
@@ -1003,6 +1021,7 @@ class Report extends Component
                 'tipo_strada_altro' => $this->tipo_strada_altro,
                 'traffico' => $this->traffico,
                 'segnaletica' => $this->segnaletica,
+                'organo' => $this->organo,
                 'segnaletica_verticale_1_via' => $this->segnaletica_verticale_1_via,
                 'segnaletica_verticale_1_altro' => $this->segnaletica_verticale_1_altro,
                 'segnaletica_verticale_1_limite_velocita' => $this->segnaletica_verticale_1_limite_velocita,
@@ -1054,167 +1073,176 @@ class Report extends Component
                 'validated' => $validate
             ];
 
-            \App\Models\Report::whereId($this->dataId)->update($reportData);
+            if (str_pad($this->protocollo_num, 3, '0', STR_PAD_LEFT) != "000")
+            {
+                \App\Models\Report::whereId($this->dataId)->update($reportData);
 
-            Log::info('Update report ' . $this->dataId . ' with data:', $reportData);
+                Log::info('Update report ' . $this->dataId . ' with data:', $reportData);
 
-            \App\Models\ReportTipoUrto::where('report_id', $this->dataId)->delete();
-            foreach ($this->tipo_urto as $x) {
-                \App\Models\ReportTipoUrto::create([
-                    'report_id' => $this->dataId,
-                    'tipo_urto_id' => $x
-                ]);
-            }
+                \App\Models\ReportTipoUrto::where('report_id', $this->dataId)->delete();
+                foreach ($this->tipo_urto as $x) {
+                    \App\Models\ReportTipoUrto::create([
+                        'report_id' => $this->dataId,
+                        'tipo_urto_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportTipoSegnalazione::where('report_id', $this->dataId)->delete();
-            foreach ($this->tipo_segnalazione as $x) {
-                \App\Models\ReportTipoSegnalazione::create([
-                    'report_id' => $this->dataId,
-                    'tipo_segnalazione_id' => $x
-                ]);
-            }
+                \App\Models\ReportTipoSegnalazione::where('report_id', $this->dataId)->delete();
+                foreach ($this->tipo_segnalazione as $x) {
+                    \App\Models\ReportTipoSegnalazione::create([
+                        'report_id' => $this->dataId,
+                        'tipo_segnalazione_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportSegnalazionePervenutaDa::where('report_id', $this->dataId)->delete();
-            foreach ($this->segnalazione_pervenuta_da as $x) {
-                \App\Models\ReportSegnalazionePervenutaDa::create([
-                    'report_id' => $this->dataId,
-                    'segnalazione_pervenuta_da_id' => $x
-                ]);
-            }
+                \App\Models\ReportSegnalazionePervenutaDa::where('report_id', $this->dataId)->delete();
+                foreach ($this->segnalazione_pervenuta_da as $x) {
+                    \App\Models\ReportSegnalazionePervenutaDa::create([
+                        'report_id' => $this->dataId,
+                        'segnalazione_pervenuta_da_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportMaterialeRecuperato::where('report_id', $this->dataId)->delete();
-            foreach ($this->materiale_recuperato as $x) {
-                \App\Models\ReportMaterialeRecuperato::create([
-                    'report_id' => $this->dataId,
-                    'materiale_recuperato_id' => $x
-                ]);
-            }
+                \App\Models\ReportMaterialeRecuperato::where('report_id', $this->dataId)->delete();
+                foreach ($this->materiale_recuperato as $x) {
+                    \App\Models\ReportMaterialeRecuperato::create([
+                        'report_id' => $this->dataId,
+                        'materiale_recuperato_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportAusilioAltriEnti::where('report_id', $this->dataId)->delete();
-            foreach ($this->ausilio_altri_enti as $x) {
-                \App\Models\ReportAusilioAltriEnti::create([
-                    'report_id' => $this->dataId,
-                    'ausilio_altri_enti_id' => $x
-                ]);
-            }
+                \App\Models\ReportAusilioAltriEnti::where('report_id', $this->dataId)->delete();
+                foreach ($this->ausilio_altri_enti as $x) {
+                    \App\Models\ReportAusilioAltriEnti::create([
+                        'report_id' => $this->dataId,
+                        'ausilio_altri_enti_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportCondizioniLuce::where('report_id', $this->dataId)->delete();
-            foreach ($this->condizioni_luce as $x) {
-                \App\Models\ReportCondizioniLuce::create([
-                    'report_id' => $this->dataId,
-                    'condizioni_luce_id' => $x
-                ]);
-            }
+                \App\Models\ReportCondizioniLuce::where('report_id', $this->dataId)->delete();
+                foreach ($this->condizioni_luce as $x) {
+                    \App\Models\ReportCondizioniLuce::create([
+                        'report_id' => $this->dataId,
+                        'condizioni_luce_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportTipoStrada::where('report_id', $this->dataId)->delete();
-            foreach ($this->tipo_strada as $x) {
-                \App\Models\ReportTipoStrada::create([
-                    'report_id' => $this->dataId,
-                    'tipo_strada_id' => $x
-                ]);
-            }
+                \App\Models\ReportTipoStrada::where('report_id', $this->dataId)->delete();
+                foreach ($this->tipo_strada as $x) {
+                    \App\Models\ReportTipoStrada::create([
+                        'report_id' => $this->dataId,
+                        'tipo_strada_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportSegnaleticaVerticale1::where('report_id', $this->dataId)->delete();
-            foreach ($this->segnaletica_verticale_1 as $x) {
-                \App\Models\ReportSegnaleticaVerticale1::create([
-                    'report_id' => $this->dataId,
-                    'segnaletica_verticale_id' => $x
-                ]);
-            }
+                \App\Models\ReportSegnaleticaVerticale1::where('report_id', $this->dataId)->delete();
+                foreach ($this->segnaletica_verticale_1 as $x) {
+                    \App\Models\ReportSegnaleticaVerticale1::create([
+                        'report_id' => $this->dataId,
+                        'segnaletica_verticale_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportSegnaleticaVerticale2::where('report_id', $this->dataId)->delete();
-            foreach ($this->segnaletica_verticale_2 as $x) {
-                \App\Models\ReportSegnaleticaVerticale2::create([
-                    'report_id' => $this->dataId,
-                    'segnaletica_verticale_id' => $x
-                ]);
-            }
+                \App\Models\ReportSegnaleticaVerticale2::where('report_id', $this->dataId)->delete();
+                foreach ($this->segnaletica_verticale_2 as $x) {
+                    \App\Models\ReportSegnaleticaVerticale2::create([
+                        'report_id' => $this->dataId,
+                        'segnaletica_verticale_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportSegnaleticaVerticale3::where('report_id', $this->dataId)->delete();
-            foreach ($this->segnaletica_verticale_3 as $x) {
-                \App\Models\ReportSegnaleticaVerticale3::create([
-                    'report_id' => $this->dataId,
-                    'segnaletica_verticale_id' => $x
-                ]);
-            }
+                \App\Models\ReportSegnaleticaVerticale3::where('report_id', $this->dataId)->delete();
+                foreach ($this->segnaletica_verticale_3 as $x) {
+                    \App\Models\ReportSegnaleticaVerticale3::create([
+                        'report_id' => $this->dataId,
+                        'segnaletica_verticale_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportSegnaleticaVerticale4::where('report_id', $this->dataId)->delete();
-            foreach ($this->segnaletica_verticale_4 as $x) {
-                \App\Models\ReportSegnaleticaVerticale4::create([
-                    'report_id' => $this->dataId,
-                    'segnaletica_verticale_id' => $x
-                ]);
-            }
+                \App\Models\ReportSegnaleticaVerticale4::where('report_id', $this->dataId)->delete();
+                foreach ($this->segnaletica_verticale_4 as $x) {
+                    \App\Models\ReportSegnaleticaVerticale4::create([
+                        'report_id' => $this->dataId,
+                        'segnaletica_verticale_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportSegnaleticaOrizzontale1::where('report_id', $this->dataId)->delete();
-            foreach ($this->segnaletica_orizzontale_1 as $x) {
-                \App\Models\ReportSegnaleticaOrizzontale1::create([
-                    'report_id' => $this->dataId,
-                    'segnaletica_orizzontale_id' => $x
-                ]);
-            }
+                \App\Models\ReportSegnaleticaOrizzontale1::where('report_id', $this->dataId)->delete();
+                foreach ($this->segnaletica_orizzontale_1 as $x) {
+                    \App\Models\ReportSegnaleticaOrizzontale1::create([
+                        'report_id' => $this->dataId,
+                        'segnaletica_orizzontale_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportSegnaleticaOrizzontale2::where('report_id', $this->dataId)->delete();
-            foreach ($this->segnaletica_orizzontale_2 as $x) {
-                \App\Models\ReportSegnaleticaOrizzontale2::create([
-                    'report_id' => $this->dataId,
-                    'segnaletica_orizzontale_id' => $x
-                ]);
-            }
+                \App\Models\ReportSegnaleticaOrizzontale2::where('report_id', $this->dataId)->delete();
+                foreach ($this->segnaletica_orizzontale_2 as $x) {
+                    \App\Models\ReportSegnaleticaOrizzontale2::create([
+                        'report_id' => $this->dataId,
+                        'segnaletica_orizzontale_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportSegnaleticaOrizzontale3::where('report_id', $this->dataId)->delete();
-            foreach ($this->segnaletica_orizzontale_3 as $x) {
-                \App\Models\ReportSegnaleticaOrizzontale3::create([
-                    'report_id' => $this->dataId,
-                    'segnaletica_orizzontale_id' => $x
-                ]);
-            }
+                \App\Models\ReportSegnaleticaOrizzontale3::where('report_id', $this->dataId)->delete();
+                foreach ($this->segnaletica_orizzontale_3 as $x) {
+                    \App\Models\ReportSegnaleticaOrizzontale3::create([
+                        'report_id' => $this->dataId,
+                        'segnaletica_orizzontale_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportSegnaleticaOrizzontale4::where('report_id', $this->dataId)->delete();
-            foreach ($this->segnaletica_orizzontale_4 as $x) {
-                \App\Models\ReportSegnaleticaOrizzontale4::create([
-                    'report_id' => $this->dataId,
-                    'segnaletica_orizzontale_id' => $x
-                ]);
-            }
+                \App\Models\ReportSegnaleticaOrizzontale4::where('report_id', $this->dataId)->delete();
+                foreach ($this->segnaletica_orizzontale_4 as $x) {
+                    \App\Models\ReportSegnaleticaOrizzontale4::create([
+                        'report_id' => $this->dataId,
+                        'segnaletica_orizzontale_id' => $x
+                    ]);
+                }
 
-            \App\Models\ReportDataTestimoniOculari::where('report_id', $this->dataId)->delete();
-            try {
-                \App\Models\ReportDataTestimoniOculari::create([
-                    'progressive' => 0,
-                    'report_id' => $this->dataId,
-                    'testi_oculari' => $this->data_testi_oculari_0,
-                    'stato_testi_oculari' => $this->data_testi_oculari_stato_0
-                ]);
-                \App\Models\ReportDataTestimoniOculari::create([
-                    'progressive' => 1,
-                    'report_id' => $this->dataId,
-                    'testi_oculari' => $this->data_testi_oculari_1,
-                    'stato_testi_oculari' => $this->data_testi_oculari_stato_1
-                ]);
-                \App\Models\ReportDataTestimoniOculari::create([
-                    'progressive' => 2,
-                    'report_id' => $this->dataId,
-                    'testi_oculari' => $this->data_testi_oculari_2,
-                    'stato_testi_oculari' => $this->data_testi_oculari_stato_2
-                ]);
-                \App\Models\ReportDataTestimoniOculari::create([
-                    'progressive' => 3,
-                    'report_id' => $this->dataId,
-                    'testi_oculari' => $this->data_testi_oculari_3,
-                    'stato_testi_oculari' => $this->data_testi_oculari_stato_3
-                ]);
-            } catch (\Exception $ex) {
-                Log::info('Error during save ' . $this->dataId . ' update:' . $ex->getMessage());
-                session()->flash('error', 'Errore in fase di salvataggio (' . $ex->getMessage() . ')');
-            }
+                \App\Models\ReportDataTestimoniOculari::where('report_id', $this->dataId)->delete();
+                try {
+                    \App\Models\ReportDataTestimoniOculari::create([
+                        'progressive' => 0,
+                        'report_id' => $this->dataId,
+                        'testi_oculari' => $this->data_testi_oculari_0,
+                        'stato_testi_oculari' => $this->data_testi_oculari_stato_0
+                    ]);
+                    \App\Models\ReportDataTestimoniOculari::create([
+                        'progressive' => 1,
+                        'report_id' => $this->dataId,
+                        'testi_oculari' => $this->data_testi_oculari_1,
+                        'stato_testi_oculari' => $this->data_testi_oculari_stato_1
+                    ]);
+                    \App\Models\ReportDataTestimoniOculari::create([
+                        'progressive' => 2,
+                        'report_id' => $this->dataId,
+                        'testi_oculari' => $this->data_testi_oculari_2,
+                        'stato_testi_oculari' => $this->data_testi_oculari_stato_2
+                    ]);
+                    \App\Models\ReportDataTestimoniOculari::create([
+                        'progressive' => 3,
+                        'report_id' => $this->dataId,
+                        'testi_oculari' => $this->data_testi_oculari_3,
+                        'stato_testi_oculari' => $this->data_testi_oculari_stato_3
+                    ]);
+                } catch (\Exception $ex) {
+                    Log::info('Error during save ' . $this->dataId . ' update:' . $ex->getMessage());
+                    session()->flash('error', 'Errore in fase di salvataggio (' . $ex->getMessage() . ')');
+                }
 
-            session()->flash('success', 'Record aggiornato');
+                session()->flash('success', 'Record aggiornato');
 
-            if (!$print)
+                if (!$print)
+                {
+                    $this->update = false;
+                    $this->resetFields();
+                }
+            }
+            else
             {
-                $this->update = false;
-                $this->resetFields();
+
+                session()->flash('error', 'Errore in fase di salvataggio, si è tentato di salvare dati nulli');
+
             }
 
         } catch (\Exception $ex) {
@@ -1736,4 +1764,26 @@ class Report extends Component
             $this->addError('verificatosi_in_data', 'Il campo Verificatosi in data deve essere nel formato corretto.');
         }
     }
+
+    public function createAddress($value, $data, $text)
+    {
+        $s = new \App\Models\Stradario();
+        $s->codicetoponimo = 0;
+        $x = explode(" ", $text);
+        $s->toponimo = "";//$x[0];
+        $s->descrizione = $text;
+        $s->save();
+        $this->$value = $s->id;
+    }
+
+    public function reloadMarche($id)
+    {
+        $this->marche = \App\Models\MarcaVeicolo::orderBy('name')->get();
+    }
+
+    public function reloadModelli($id)
+    {
+        $this->modelli = \App\Models\ModelloVeicolo::orderBy('name')->get();        
+    }
+
 }

+ 23 - 3
app/Http/Livewire/Traits/HasAllegato.php

@@ -11,7 +11,9 @@ trait HasAllegato
     public $allegatoId = 0;
     public $allegatoType = 0;
     public $allegatoGallery = 0;
+    public $allegatoFotoSinistri = 0;
     public $allegatoName = '';
+    public $allegatoDidascalia = '';
     public $allegatoVisible = false;
     public $allegatoFiles = '';
     public $allegatiFiles = [];
@@ -35,7 +37,9 @@ trait HasAllegato
         $this->allegatoId = 0;
         $this->allegatoType = $type;
         $this->allegatoGallery = 0;
+        $this->allegatoFotoSinistri = 0;
         $this->allegatoName = '';
+        $this->allegatoDidsacalia = '';
         $this->allegatoVisible = false;
         $this->allegatoFiles = '';
         $this->allegatiFiles = [];
@@ -60,6 +64,8 @@ trait HasAllegato
             ReportAllegatiGallery::where('id', $this->allegatoId)->update([
                 'file_type' => $this->allegatoType,
                 'gallery_type' => $this->allegatoGallery,
+                'foto_sinistri' => $this->allegatoFotoSinistri,
+                'didascalia' => $this->allegatoDidascalia,
                 'name' => $this->allegatoName,
                 'is_visible' => $this->allegatoVisible,
                 'files' => $files,
@@ -70,6 +76,8 @@ trait HasAllegato
                 'report_id' => $this->dataId,
                 'file_type' => $this->allegatoType,
                 'gallery_type' => $this->allegatoGallery,
+                'foto_sinistri' => $this->allegatoFotoSinistri,
+                'didascalia' => $this->allegatoDidascalia,
                 'name' => $this->allegatoName,
                 'is_visible' => $this->allegatoVisible,
                 'files' => $files,
@@ -88,6 +96,8 @@ trait HasAllegato
     {
         $this->allegatoId = 0;
         $this->allegatoGallery = 0;
+        $this->allegatoFotoSinistri = 0;
+        $this->allegatoDidascalia = '';
         $this->allegatoName = '';
         $this->allegatoVisible = false;
         $this->allegatoFiles = '';
@@ -117,6 +127,8 @@ trait HasAllegato
             $this->allegatoId = $id;
             $this->allegatoType = $a->file_type;
             $this->allegatoGallery = $a->gallery_type;
+            $this->allegatoFotoSinistri = $a->foto_sinistri;
+            $this->allegatoDidascalia = $a->didascalia;
             $this->allegatoName = $a->name;
             $this->allegatoFiles = $a->files;
             $this->allegatiFiles = explode("|", $this->allegatoFiles);
@@ -133,9 +145,17 @@ trait HasAllegato
     public function updatedAllegati()
     {
         foreach ($this->allegati as $allegato) {
-            $name = $allegato->getClientOriginalName();
-            $allegato->storeAs('', $name, 'public');
-            $this->allegatiFiles[] = $name;
+            $size = $allegato->getSize();
+            if ($size < env('FILE_SIZE', 10000000))
+            {
+                $name = $allegato->getClientOriginalName();
+                $allegato->storeAs('', $name, 'public');
+                $this->allegatiFiles[] = $name;
+            }
+            else
+            {
+                $this->emit('fileSize', 'Superato il limite di ' . number_format($size / 1000 / 1000, 0) . "MB");
+            }
         }
         $this->emit('attachments', implode("|", $this->allegatiFiles));
         $this->allegati = [];

+ 19 - 1
app/Http/Livewire/Traits/HasAnagrafica.php

@@ -368,7 +368,9 @@ trait HasAnagrafica{
                     'destinazione_veicolo_amministrativo_num_art_violato' => $this->data_destinazione_veicolo_amministrativo_num_art_violato,
                     'destinazione_veicolo_amministrativo_cds' => $this->data_destinazione_veicolo_amministrativo_cds,
                     'circostanze_presunte_incidente' => $this->data_circostanze_presunte_incidente,
+                    'pneumatici_diversi' => $this->data_pneumatici_diversi,
                     'stato_pneumatici' => $this->data_stato_pneumatici,
+                    'stato_pneumatici_posteriori' => $this->data_stato_pneumatici_posteriori,
                     'marca_pneumatici' => $this->data_marca_pneumatici,
                     'misura_pneumatici' => $this->data_misura_pneumatici,
                     'dispositivi_ottici' => $this->data_dispositivi_ottici,
@@ -430,7 +432,23 @@ trait HasAnagrafica{
                     'tipo_danno_4' => $this->data_tipo_danno_4 > 0 ? $this->data_tipo_danno_4 : null,
                     'entita_danno_4' => $this->data_entita_danno_4 > 0 ? $this->data_entita_danno_4 : null,
                     'effetto_danno_4' => $this->data_effetto_danno_4 > 0 ? $this->data_effetto_danno_4 : null,
-                    'parte_macchina_4' => $this->data_parte_macchina_4 > 0 ? $this->data_parte_macchina_4 : null
+                    'parte_macchina_4' => $this->data_parte_macchina_4 > 0 ? $this->data_parte_macchina_4 : null,
+                    'tipo_danno_5' => $this->data_tipo_danno_5 > 0 ? $this->data_tipo_danno_5 : null,
+                    'entita_danno_5' => $this->data_entita_danno_5 > 0 ? $this->data_entita_danno_5 : null,
+                    'effetto_danno_5' => $this->data_effetto_danno_5 > 0 ? $this->data_effetto_danno_5 : null,
+                    'parte_macchina_5' => $this->data_parte_macchina_5 > 0 ? $this->data_parte_macchina_5 : null,
+                    'tipo_danno_6' => $this->data_tipo_danno_6 > 0 ? $this->data_tipo_danno_6 : null,
+                    'entita_danno_6' => $this->data_entita_danno_6 > 0 ? $this->data_entita_danno_6 : null,
+                    'effetto_danno_6' => $this->data_effetto_danno_6 > 0 ? $this->data_effetto_danno_6 : null,
+                    'parte_macchina_6' => $this->data_parte_macchina_6 > 0 ? $this->data_parte_macchina_6 : null,
+                    'tipo_danno_7' => $this->data_tipo_danno_7 > 0 ? $this->data_tipo_danno_7 : null,
+                    'entita_danno_7' => $this->data_entita_danno_7 > 0 ? $this->data_entita_danno_7 : null,
+                    'effetto_danno_7' => $this->data_effetto_danno_7 > 0 ? $this->data_effetto_danno_7 : null,
+                    'parte_macchina_7' => $this->data_parte_macchina_7 > 0 ? $this->data_parte_macchina_7 : null,
+                    'tipo_danno_8' => $this->data_tipo_danno_8 > 0 ? $this->data_tipo_danno_8 : null,
+                    'entita_danno_8' => $this->data_entita_danno_8 > 0 ? $this->data_entita_danno_8 : null,
+                    'effetto_danno_8' => $this->data_effetto_danno_8 > 0 ? $this->data_effetto_danno_8 : null,
+                    'parte_macchina_8' => $this->data_parte_macchina_8 > 0 ? $this->data_parte_macchina_8 : null,
                 ]
             );
 

+ 40 - 0
app/Http/Livewire/Traits/HasVeicoli.php

@@ -50,6 +50,8 @@ trait HasVeicoli{
     public $data_destinazione_veicolo_amministrativo_cds;
     public $data_circostanze_presunte_incidente;
     public $data_stato_pneumatici;
+    public $data_stato_pneumatici_posteriori;
+    public $data_pneumatici_diversi;
     public $data_marca_pneumatici;
     public $data_misura_pneumatici;
     public $data_dispositivi_ottici;
@@ -113,6 +115,22 @@ trait HasVeicoli{
     public $data_entita_danno_4;
     public $data_effetto_danno_4;
     public $data_parte_macchina_4;
+    public $data_tipo_danno_5;
+    public $data_entita_danno_5;
+    public $data_effetto_danno_5;
+    public $data_parte_macchina_5;
+    public $data_tipo_danno_6;
+    public $data_entita_danno_6;
+    public $data_effetto_danno_6;
+    public $data_parte_macchina_6;
+    public $data_tipo_danno_7;
+    public $data_entita_danno_7;
+    public $data_effetto_danno_7;
+    public $data_parte_macchina_7;
+    public $data_tipo_danno_8;
+    public $data_entita_danno_8;
+    public $data_effetto_danno_8;
+    public $data_parte_macchina_8;
     public $data_cinture_conducente;
     public $verbale_violazione_numero;
     public $articolo_violato;
@@ -169,6 +187,8 @@ trait HasVeicoli{
         $this->data_destinazione_veicolo_amministrativo_cds = '';
         $this->data_circostanze_presunte_incidente = '';
         $this->data_stato_pneumatici = null;
+        $this->data_stato_pneumatici_posteriori = null;
+        $this->data_pneumatici_diversi = 0;
         $this->data_marca_pneumatici = '';
         $this->data_misura_pneumatici = '';
         $this->data_dispositivi_ottici = null;
@@ -323,6 +343,8 @@ trait HasVeicoli{
             $this->data_destinazione_veicolo_amministrativo_cds = $data->destinazione_veicolo_amministrativo_cds;
             $this->data_circostanze_presunte_incidente = $data->circostanze_presunte_incidente;
             $this->data_stato_pneumatici = $data->stato_pneumatici;
+            $this->data_stato_pneumatici_posteriori = $data->stato_pneumatici_posteriori;
+            $this->data_pneumatici_diversi = $data->pneumatici_diversi;
             $this->data_marca_pneumatici = $data->marca_pneumatici;
             $this->data_misura_pneumatici = $data->misura_pneumatici;
             $this->data_dispositivi_ottici = $data->dispositivi_ottici;
@@ -575,4 +597,22 @@ trait HasVeicoli{
         $this->emit('close-modal');
     }
 
+    public function addMarca($marca)
+    {
+        $m = new \App\Models\MarcaVeicolo();
+        $m->name = $marca;
+        $m->save();
+        $this->vei_marca_id = $m->id;       
+        $this->emit('reloadMarche', $m->id, $m->name);
+    }
+
+    public function addModello($modello)
+    {
+        $m = new \App\Models\ModelloVeicolo();
+        $m->name = $modello;
+        $m->save();
+        $this->vei_modello_id = $m->id;       
+        $this->emit('reloadModelli', $m->id, $m->name);
+    }
+
 }

+ 1 - 0
app/Models/Report.php

@@ -97,6 +97,7 @@ public $timestamps = false;
         'tipo_strada_altro' ,
         'traffico' ,
         'segnaletica' ,
+        'organo' ,
         'segnaletica_verticale_1_via' ,
         'segnaletica_verticale_1_altro' ,
         'segnaletica_verticale_1_limite_velocita' ,

+ 2 - 0
app/Models/ReportAllegatiGallery.php

@@ -16,6 +16,8 @@ public $timestamps = false;
         'report_id' ,
         'file_type' ,
         'gallery_type',
+        'foto_sinistri',
+        'didascalia',
         'name' ,
         'files',
         'token' ,

+ 19 - 1
app/Models/ReportDataVeicoli.php

@@ -41,6 +41,8 @@ class ReportDataVeicoli extends Model
         'destinazione_veicolo_amministrativo_cds',
         'circostanze_presunte_incidente',
         'stato_pneumatici',
+        'stato_pneumatici_posteriori',
+        'pneumatici_diversi',
         'marca_pneumatici' ,
         'misura_pneumatici' ,
         'dispositivi_ottici',
@@ -102,7 +104,23 @@ class ReportDataVeicoli extends Model
         'tipo_danno_4',
         'entita_danno_4',
         'effetto_danno_4',
-        'parte_macchina_4'
+        'parte_macchina_4',
+        'tipo_danno_5',
+        'entita_danno_5',
+        'effetto_danno_5',
+        'parte_macchina_5',
+        'tipo_danno_6',
+        'entita_danno_6',
+        'effetto_danno_6',
+        'parte_macchina_6',
+        'tipo_danno_7',
+        'entita_danno_7',
+        'effetto_danno_7',
+        'parte_macchina_7',
+        'tipo_danno_8',
+        'entita_danno_8',
+        'effetto_danno_8',
+        'parte_macchina_8',
     ];
 
     public function proprietario()

+ 34 - 0
database/migrations/2025_10_24_100000_add_filds_to_fcf_reports_allegati_galleries_table.php

@@ -0,0 +1,34 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     */
+
+    public function up()
+    {
+        Schema::table('fcf_reports_allegati_galleries', function (Blueprint $table) {
+            $table->integer('foto_sinistri')->nullable();
+            $table->string('didascalia')->nullable();
+        });
+
+    }
+
+    /**
+     * Reverse the migrations.
+     */
+    public function down(): void
+    {
+        Schema::table('fcf_reports_allegati_galleries', function (Blueprint $table) {
+            $table->dropColumn([
+                'foto_sinistri',
+                'didascalia'
+            ]);
+        });
+    }
+};

+ 47 - 0
database/migrations/2025_10_24_170000_add_more_columns_to_fcf_reports_report_data_veicoli_table.php

@@ -0,0 +1,47 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    public function up()
+    {
+        Schema::table('fcf_reports_report_data_veicoli', function (Blueprint $table) {
+            $table->integer('tipo_danno_5')->nullable();
+            $table->integer('entita_danno_5')->nullable();
+            $table->integer('effetto_danno_5')->nullable();
+            $table->integer('parte_macchina_5')->nullable();
+
+            $table->integer('tipo_danno_6')->nullable();
+            $table->integer('entita_danno_6')->nullable();
+            $table->integer('effetto_danno_6')->nullable();
+            $table->integer('parte_macchina_6')->nullable();
+
+            $table->integer('tipo_danno_7')->nullable();
+            $table->integer('entita_danno_7')->nullable();
+            $table->integer('effetto_danno_7')->nullable();
+            $table->integer('parte_macchina_7')->nullable();
+
+            $table->integer('tipo_danno_8')->nullable();
+            $table->integer('entita_danno_8')->nullable();
+            $table->integer('effetto_danno_8')->nullable();
+            $table->integer('parte_macchina_8')->nullable();
+        });
+    }
+    /**
+     * Reverse the migrations.
+     */
+    public function down()
+    {
+        Schema::table('fcf_reports_report_data_veicoli', function (Blueprint $table) {
+            $table->dropColumn([
+                'tipo_danno_5', 'entita_danno_5', 'effetto_danno_5', 'parte_macchina_5',
+                'tipo_danno_6', 'entita_danno_6', 'effetto_danno_6', 'parte_macchina_6',
+                'tipo_danno_7', 'entita_danno_7', 'effetto_danno_7', 'parte_macchina_7',
+                'tipo_danno_8', 'entita_danno_8', 'effetto_danno_8', 'parte_macchina_8',
+            ]);
+        });
+    }
+};

+ 24 - 0
database/migrations/2025_11_28_170000_add_organo_to_fcf_reports_table.php

@@ -0,0 +1,24 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    public function up()
+    {
+        Schema::table('fcf_reports_reports', function (Blueprint $table) {            
+            $table->string('organo')->nullable();
+        });
+    }
+    /**
+     * Reverse the migrations.
+     */
+    public function down()
+    {
+        Schema::table('fcf_reports_reports', function (Blueprint $table) {
+            $table->dropColumn('organo');
+        });
+    }
+};

+ 25 - 0
database/migrations/2025_12_01_164500_add_fields_pneumatici_to_fcf_reports_report_data_veicoli_table.php

@@ -0,0 +1,25 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    public function up()
+    {
+        Schema::table('fcf_reports_report_data_veicoli', function (Blueprint $table) {            
+            $table->string('stato_pneumatici_posteriori')->nullable();
+            $table->boolean('pneumatici_diversi')->nullable();
+        });
+    }
+    /**
+     * Reverse the migrations.
+     */
+    public function down()
+    {
+        Schema::table('fcf_reports_report_data_veicoli', function (Blueprint $table) {
+            $table->dropColumn(['stato_pneumatici_posteriori', 'pneumatici_diversi']);
+        });
+    }
+};

+ 33 - 0
resources/views/components/report/allegati/allegati-modal.blade.php

@@ -42,6 +42,31 @@
                     </div>
                 </div>
 
+                <div class="row mt-3">
+                    <div class="col-md-4">
+                        <label for="allegatoFotoSinistri" class="form-label">Foto sinistri</label>
+                    </div>
+                    <div class="col-md-8">
+                        <select class="form-control @error('allegatoFotoSinistri') is-invalid @enderror" style="width:100%" wire:model="allegatoFotoSinistri" id="allegatoFotoSinistri">
+                            <option value="">Seleziona...</option>
+                            <option value="1">Valore 1</option>
+                            <option value="2">Valore 2</option>                            
+                        </select>
+                        @error('allegatoFotoSinistri')
+                            <div class="invalid-feedback">{{ $message }}</div>
+                        @enderror
+                    </div>
+                </div>
+
+                <div class="row mt-3">
+                    <div class="col-md-4">
+                        <label for="allegatoDidascalia" class="form-label">Didascalia</label>
+                    </div>
+                    <div class="col-md-8">
+                        <input class="form-control" type="text" id="allegatoDidascalia" placeholder="Didascalia" wire:model="allegatoDidascalia">
+                    </div>
+                </div>
+
                 <div class="row mt-3">
                     <div class="col-md-4">
                         <label for="allegati" class="form-label">Files</label>
@@ -50,6 +75,7 @@
 
                         <div class="form-group">
                             <input wire:model="allegati" type="file" class="form-control-file" id="allegati" multiple>
+                            <span id="fileSize" style="color:red"></span>
                         </div>
 
                         <div id="files-container" class="mt-2">
@@ -118,6 +144,13 @@
                 window.livewire.emit('refresh');
             }, 200);
         });
+
+        window.livewire.on('fileSize', function (txt) {
+            console.log("QUA" + txt);
+            setTimeout(function() {
+                $("#fileSize").html(txt);
+            }, 200);
+        });
     });
 </script>
 @endpush

+ 11 - 0
resources/views/components/report/segnaletica/segnaletica.blade.php

@@ -18,6 +18,17 @@
                                 </select>
                             </div>
                         </div>
+                        <div class="col-sm-6" style="display:none">
+                            <div class="form-group">
+                                <label>Organi</label>
+                                <select class="form-control" wire:model="organo" style="width:100%">
+                                    <option value="">
+                                        @foreach ($organi as $organo)
+                                            <option value="{{ $organo }}">{{ $organo }}
+                                        @endforeach
+                                </select>
+                            </div>
+                        </div>
                     </div>
                 </div>
             </div>

+ 1 - 1
resources/views/components/report/veicoli/accordion/accertamenti-passeggeri-accordion.blade.php

@@ -59,7 +59,7 @@
         </div>
         <div class="row mt-3">
             <div class="col-md-4">
-                <label for="data_casco_passeggero" class="form-label">Uso del casco</label>
+                <label for="data_casco_passeggero" class="form-label">Uso del cascoxxx</label>
                 <select class="form-control" style="width:100%" wire:model="data_casco_passeggero"
                     id="data_casco_passeggero">
                     <option value="0"></option>

+ 30 - 2
resources/views/components/report/veicoli/accordion/osservazioni-veicolo-accordion.blade.php

@@ -9,6 +9,11 @@
     <div class="card-body">
         <div class="row mt-3">
             <div class="col-md-4">
+                <div class="column">                    
+                    <label for="data_stato_pneumatici" class="form-label">Pneumatici diversi</label><br>
+                    <input type="radio" value="0" {{ $data_pneumatici_diversi == 0 ? 'checked' : '' }} name="chkPneumaticiDiversi" class="chkPneumaticiDiversi" wire:model="data_pneumatici_diversi">No
+                    <input type="radio" value="1" {{ $data_pneumatici_diversi == 1 ? 'checked' : '' }} name="chkPneumaticiDiversi" class="chkPneumaticiDiversi" wire:model="data_pneumatici_diversi">Si
+                </div>
                 <div class="column">
                     <label for="data_stato_pneumatici" class="form-label">Stato
                         pneumatici</label>
@@ -23,6 +28,20 @@
                         </ul>
                     </select>
                 </div>
+                <div class="column" id="divPneumaticiPosteriori" style="display:{{$data_pneumatici_diversi == 1 ? 'block' : 'none'}}">
+                    <label for="data_stato_pneumatici_posteriori" class="form-label">Stato
+                        pneumatici posteriori</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_stato_pneumatici_posteriori">
+                        <option value=""></option>
+                        <option value="1">Regolamentare</option>
+                        <option value="2">Buono</option>
+                        <option value="3">Sufficiente</option>
+                        <option value="4">Insufficiente</option>
+                        <option value="5">Non rilevato</option>
+                        </ul>
+                    </select>
+                </div>
                 <div class="column mt-3">
                     <label for="data_dispositivi_ottici" class="form-label">Dispositivi
                         ottici</label>
@@ -64,8 +83,7 @@
                     </select>
                 </div>
                 <div class="column mt-3">
-                    <label for="data_attivazione_airbag" class="form-label">Attivazione
-                        airbag</label>
+                    <label for="data_attivazione_airbag" class="form-label">Attivazione airbag</label>
                     <select class="form-control" style="width:100%"
                         wire:model="data_attivazione_airbag">
                         <option value=""></option>
@@ -74,6 +92,16 @@
                         <option value="3">Non rilevato</option>
                     </select>
                 </div>
+                <div class="column mt-3">
+                    <label for="data_airbag_posizione" class="form-label">Posizione airbag</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_airbag_posizione">
+                        <option value=""></option>
+                        <option value="Anteriore">Anteriore</option>
+                        <option value="Posteriore">Posteriore</option>
+                        <option value="Laterale">Laterale</option>                        
+                    </select>
+                </div>
             </div>
             <div class="col-md-4">
                 <div class="column">

+ 207 - 0
resources/views/components/report/veicoli/accordion/veicolo/veicolo-danni-circostanze.blade.php

@@ -204,6 +204,213 @@
                     </select>
                 </div>
             </div>
+
+            <div class="field-group col-md-3" id="damage-column-5" style="display: none;">
+                <div class="column">
+                    <label for="data_tipo_danno_5" class="form-label">Tipologia danno
+                        5</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_tipo_danno_5">
+                        <option value=""></option>
+                        @foreach ($tipi_danno as $t)
+                            <option value="{{ $t->id }}">{{ $t->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_entita_danno_5" class="form-label">Entità del danno
+                        5</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_entita_danno_5">
+                        <option value=""></option>
+                        @foreach ($entita_danni as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_effetto_danno_5" class="form-label">Effetto del
+                        danno 5</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_effetto_danno_5">
+                        <option value=""></option>
+                        @foreach ($effetto_danni as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_parte_macchina_5" class="form-label">Zona veicolo
+                        5</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_parte_macchina_5">
+                        <option value=""></option>
+                        @foreach ($parti_macchina as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+            </div>
+
+            <div class="field-group col-md-3" id="damage-column-6" style="display: none;">
+                <div class="column">
+                    <label for="data_tipo_danno_6" class="form-label">Tipologia danno
+                        6</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_tipo_danno_6">
+                        <option value=""></option>
+                        @foreach ($tipi_danno as $t)
+                            <option value="{{ $t->id }}">{{ $t->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_entita_danno_6" class="form-label">Entità del danno
+                        6</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_entita_danno_6">
+                        <option value=""></option>
+                        @foreach ($entita_danni as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_effetto_danno_6" class="form-label">Effetto del
+                        danno 6</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_effetto_danno_6">
+                        <option value=""></option>
+                        @foreach ($effetto_danni as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_parte_macchina_6" class="form-label">Zona veicolo
+                        6</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_parte_macchina_6">
+                        <option value=""></option>
+                        @foreach ($parti_macchina as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+            </div>
+
+            <div class="field-group col-md-3" id="damage-column-7" style="display: none;">
+                <div class="column">
+                    <label for="data_tipo_danno_7" class="form-label">Tipologia danno
+                        7</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_tipo_danno_7">
+                        <option value=""></option>
+                        @foreach ($tipi_danno as $t)
+                            <option value="{{ $t->id }}">{{ $t->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_entita_danno_7" class="form-label">Entità del danno
+                        7</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_entita_danno_7">
+                        <option value=""></option>
+                        @foreach ($entita_danni as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_effetto_danno_7" class="form-label">Effetto del
+                        danno 7</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_effetto_danno_7">
+                        <option value=""></option>
+                        @foreach ($effetto_danni as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_parte_macchina_7" class="form-label">Zona veicolo
+                        7</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_parte_macchina_7">
+                        <option value=""></option>
+                        @foreach ($parti_macchina as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+            </div>
+
+            <div class="field-group col-md-3" id="damage-column-8" style="display: none;">
+                <div class="column">
+                    <label for="data_tipo_danno_8" class="form-label">Tipologia danno
+                        8</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_tipo_danno_8">
+                        <option value=""></option>
+                        @foreach ($tipi_danno as $t)
+                            <option value="{{ $t->id }}">{{ $t->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_entita_danno_8" class="form-label">Entità del danno
+                        8</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_entita_danno_8">
+                        <option value=""></option>
+                        @foreach ($entita_danni as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_effetto_danno_8" class="form-label">Effetto del
+                        danno 8</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_effetto_danno_8">
+                        <option value=""></option>
+                        @foreach ($effetto_danni as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+                <div class="column">
+                    <label for="data_parte_macchina_8" class="form-label">Zona veicolo
+                        8</label>
+                    <select class="form-control" style="width:100%"
+                        wire:model="data_parte_macchina_8">
+                        <option value=""></option>
+                        @foreach ($parti_macchina as $e)
+                            <option value="{{ $e->id }}">{{ $e->name }}
+                            </option>
+                        @endforeach
+                    </select>
+                </div>
+            </div>
+
+
+
         </div>
 
         <div class="row mt-2">

+ 12 - 4
resources/views/components/report/veicoli/veicolo-modal.blade.php

@@ -29,28 +29,34 @@
                             <div class="col-md-4">
                                 <label for="vei_marca_id" class="form-label">Marca</label>
                             </div>
-                            <div class="col-md-8">
-                                <select class="form-control" wire:model="vei_marca_id" style="width:100%">
+                            <div class="col-md-6">
+                                <select class="form-control" wire:model="vei_marca_id" id="vei_marca_id" style="width:100%">
                                     <option value="">
                                         @foreach ($marche as $t)
                                             <option value="{{ $t->id }}">{{ $t->name }}
                                         @endforeach
                                 </select>
                             </div>
+                            <div class="col-md-2">
+                                <button onclick="addMarca()" type="button" class="btn btn-block btn-success float-right btMarca" style="max-width:150px">Aggiungi</button>
+                            </div>
                         </div>
 
                         <div class="row mt-3">
                             <div class="col-md-4">
                                 <label for="vei_modello_id" class="form-label">Modello</label>
                             </div>
-                            <div class="col-md-8">
-                                <select class="form-control" wire:model="vei_modello_id" style="width:100%">
+                            <div class="col-md-6">
+                                <select class="form-control" wire:model="vei_modello_id" id="vei_modello_id" style="width:100%">
                                     <option value="">
                                         @foreach ($modelli as $t)
                                             <option value="{{ $t->id }}">{{ $t->name }}
                                         @endforeach
                                 </select>
                             </div>
+                            <div class="col-md-2">
+                                <button onclick="addModello()" type="button" class="btn btn-block btn-success float-right btModello" style="max-width:150px">Aggiungi</button>
+                            </div>
                         </div>
 
                         <div class="row mt-3">
@@ -204,3 +210,5 @@
                 </div>
             </div>
         </div>
+
+        

+ 26 - 0
resources/views/components/verbale/stato-veicolo/index.blade.php

@@ -14,6 +14,7 @@
         (isset($datiVeicolo['danni_visibili_pre_esistenti']) && !empty($datiVeicolo['danni_visibili_pre_esistenti'])) ||
         (isset($datiVeicolo['destinazione_veicolo']) && !empty($datiVeicolo['destinazione_veicolo'])) ||
         (isset($datiVeicolo['circostanze_presunte_incidente']) && !empty($datiVeicolo['circostanze_presunte_incidente'])) ||
+        (isset($datiVeicolo['stato_pneumatici_posteriori']) && !empty($datiVeicolo['stato_pneumatici_posteriori'])) ||
         (isset($datiVeicolo['stato_pneumatici']) && !empty($datiVeicolo['stato_pneumatici']))
     );
 @endphp
@@ -95,6 +96,7 @@
     @php
         $hasObservationsData = $datiVeicolo && (
             (isset($datiVeicolo['stato_pneumatici']) && !empty($datiVeicolo['stato_pneumatici'])) ||
+            (isset($datiVeicolo['stato_pneumatici_posteriori']) && !empty($datiVeicolo['stato_pneumatici_posteriori'])) ||
             (isset($datiVeicolo['marca_pneumatici']) && !empty($datiVeicolo['marca_pneumatici'])) ||
             (isset($datiVeicolo['misura_pneumatici']) && !empty($datiVeicolo['misura_pneumatici'])) ||
             (isset($datiVeicolo['dispositivi_ottici']) && !empty($datiVeicolo['dispositivi_ottici'])) ||
@@ -134,6 +136,14 @@
                                 </td>
                             @endif
                         </tr>
+                        <tr>
+                            @if (isset($datiVeicolo['stato_pneumatici_posteriori']) && $datiVeicolo['stato_pneumatici_posteriori'])
+                                <td width="50%" class="" style="padding-bottom: 10px !important;border: none!important">
+                                    <b>STATO PNEUMATICI POSTERIORI:</b>
+                                    {{ VehicleStatusHelper::getStatusText($datiVeicolo['stato_pneumatici_posteriori'], VehicleStatusHelper::getStatoPneumaticiMap()) }}
+                                </td>
+                            @endif
+                        </tr>
                         <tr>
                             @if (isset($datiVeicolo['marca_pneumatici']) && $datiVeicolo['marca_pneumatici'])
                                 <td width="25%" class="" style="padding-bottom: 10px !important;border: none!important"><b>MARCA
@@ -228,6 +238,22 @@
         (isset($datiVeicolo['entita_danno_3']) && !empty($datiVeicolo['entita_danno_3'])) ||
         (isset($datiVeicolo['effetto_danno_3']) && !empty($datiVeicolo['effetto_danno_3'])) ||
         (isset($datiVeicolo['parte_macchina_3']) && !empty($datiVeicolo['parte_macchina_3'])) ||
+        (isset($datiVeicolo['tipo_danno_5']) && !empty($datiVeicolo['tipo_danno_5'])) ||
+        (isset($datiVeicolo['entita_danno_5']) && !empty($datiVeicolo['entita_danno_5'])) ||
+        (isset($datiVeicolo['effetto_danno_5']) && !empty($datiVeicolo['effetto_danno_5'])) ||
+        (isset($datiVeicolo['parte_macchina_5']) && !empty($datiVeicolo['parte_macchina_5'])) ||
+        (isset($datiVeicolo['tipo_danno_6']) && !empty($datiVeicolo['tipo_danno_6'])) ||
+        (isset($datiVeicolo['entita_danno_6']) && !empty($datiVeicolo['entita_danno_6'])) ||
+        (isset($datiVeicolo['effetto_danno_6']) && !empty($datiVeicolo['effetto_danno_6'])) ||
+        (isset($datiVeicolo['parte_macchina_6']) && !empty($datiVeicolo['parte_macchina_6'])) ||
+        (isset($datiVeicolo['tipo_danno_7']) && !empty($datiVeicolo['tipo_danno_7'])) ||
+        (isset($datiVeicolo['entita_danno_7']) && !empty($datiVeicolo['entita_danno_7'])) ||
+        (isset($datiVeicolo['effetto_danno_7']) && !empty($datiVeicolo['effetto_danno_7'])) ||
+        (isset($datiVeicolo['parte_macchina_7']) && !empty($datiVeicolo['parte_macchina_7'])) ||
+        (isset($datiVeicolo['tipo_danno_8']) && !empty($datiVeicolo['tipo_danno_8'])) ||
+        (isset($datiVeicolo['entita_danno_8']) && !empty($datiVeicolo['entita_danno_8'])) ||
+        (isset($datiVeicolo['effetto_danno_8']) && !empty($datiVeicolo['effetto_danno_8'])) ||
+        (isset($datiVeicolo['parte_macchina_8']) && !empty($datiVeicolo['parte_macchina_8'])) ||
         (isset($datiVeicolo['tipo_danno_4']) && !empty($datiVeicolo['tipo_danno_4'])) ||
         (isset($datiVeicolo['entita_danno_4']) && !empty($datiVeicolo['entita_danno_4'])) ||
         (isset($datiVeicolo['effetto_danno_4']) && !empty($datiVeicolo['effetto_danno_4'])) ||

+ 130 - 128
resources/views/components/verbale/veicolo/proprietario.blade.php

@@ -35,163 +35,165 @@
     }
 </style>
 @if ($datiVeicolo?->conducente_uguale_proprietario == 0)
-    <table class="table-content striped-table" width="100%">
-        <tr>
-            <td width="25%" style="text-align: center; font-size: 20px;">
-                <table class="">
-                    <tr class="tr-sub-title" >
-                        <td style="border:none !important;" class="bold">PROPRIETARIO</td>
-                    </tr>
-                </table>
-            </td>
-            <td width="75%">
-                <table class="striped-table">
-                    @if ($datiVeicolo?->proprietario?->rag_soc)
-                        <tr>
-                            <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">RAGIONE SOCIALE:</td>
-                            <td width="75%" class="veicolo-content-cell" style="padding-bottom: 10px !important;" colspan="3">
-                                {{ $datiVeicolo?->proprietario?->rag_soc ?? '' }}
-                            </td>
+    @if($datiVeicolo?->proprietario?->rag_soc != '' || $datiVeicolo?->proprietario?->lastname != '' || $datiVeicolo?->proprietario?->firstname != '')
+        <table class="table-content striped-table" width="100%">
+            <tr>
+                <td width="25%" style="text-align: center; font-size: 20px;">
+                    <table class="">
+                        <tr class="tr-sub-title" >
+                            <td style="border:none !important;" class="bold">PROPRIETARIO</td>
                         </tr>
-                        @if ($datiVeicolo?->proprietario?->anag_foreign_residence_country)
+                    </table>
+                </td>
+                <td width="75%">
+                    <table class="striped-table">
+                        @if ($datiVeicolo?->proprietario?->rag_soc)
                             <tr>
-                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - PAESE ESTERO:</td>
-                                <td width="75%" class="veicolo-content-cell" colspan="3" style="padding-bottom: 10px !important;">
-                                    {{ $datiVeicolo?->proprietario?->foreign_residence_country_value?->name ?? '' }}
+                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">RAGIONE SOCIALE:</td>
+                                <td width="75%" class="veicolo-content-cell" style="padding-bottom: 10px !important;" colspan="3">
+                                    {{ $datiVeicolo?->proprietario?->rag_soc ?? '' }}
                                 </td>
                             </tr>
+                            @if ($datiVeicolo?->proprietario?->anag_foreign_residence_country)
+                                <tr>
+                                    <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - PAESE ESTERO:</td>
+                                    <td width="75%" class="veicolo-content-cell" colspan="3" style="padding-bottom: 10px !important;">
+                                        {{ $datiVeicolo?->proprietario?->foreign_residence_country_value?->name ?? '' }}
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - CITTA ESTERO:</td>
+                                    <td width="75%" class="veicolo-content-cell" colspan="3" style="padding-bottom: 10px !important;">
+                                        {{ $datiVeicolo?->proprietario?->anag_foreign_residence_city ?? '' }}
+                                    </td>
+                                </tr>
+                            @else
+                                <tr>
+                                    <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - COMUNE:</td>
+                                    <td width="75%" class="veicolo-content-cell" colspan="3" style="padding-bottom: 10px !important;">
+                                        {{ $datiVeicolo?->proprietario?->sede_legale_town_id_value?->title ?? '' }}
+                                    </td>
+                                </tr>
+                                <tr>
+                                    <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - PROVINCIA:</td>
+                                    <td width="75%" class="veicolo-content-cell" colspan="3" style="padding-bottom: 10px !important;">
+                                        {{ $datiVeicolo?->proprietario?->sede_legale_prov_id_value?->title ?? '' }}
+                                    </td>
+                                </tr>
+                            @endif
                             <tr>
-                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - CITTA ESTERO:</td>
+                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - INDIRIZZO:</td>
                                 <td width="75%" class="veicolo-content-cell" colspan="3" style="padding-bottom: 10px !important;">
-                                    {{ $datiVeicolo?->proprietario?->anag_foreign_residence_city ?? '' }}
+                                    {{ $datiVeicolo?->proprietario?->sede_legale_address ?? '' }}
                                 </td>
                             </tr>
-                        @else
                             <tr>
-                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - COMUNE:</td>
+                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - CAP:</td>
                                 <td width="75%" class="veicolo-content-cell" colspan="3" style="padding-bottom: 10px !important;">
-                                    {{ $datiVeicolo?->proprietario?->sede_legale_town_id_value?->title ?? '' }}
+                                    {{ $datiVeicolo?->proprietario?->sede_legale_cap ?? '' }}
                                 </td>
                             </tr>
                             <tr>
-                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - PROVINCIA:</td>
-                                <td width="75%" class="veicolo-content-cell" colspan="3" style="padding-bottom: 10px !important;">
-                                    {{ $datiVeicolo?->proprietario?->sede_legale_prov_id_value?->title ?? '' }}
-                                </td>
-                            </tr>
-                        @endif
-                        <tr>
-                            <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - INDIRIZZO:</td>
-                            <td width="75%" class="veicolo-content-cell" colspan="3" style="padding-bottom: 10px !important;">
-                                {{ $datiVeicolo?->proprietario?->sede_legale_address ?? '' }}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">SEDE LEGALE - CAP:</td>
-                            <td width="75%" class="veicolo-content-cell" colspan="3" style="padding-bottom: 10px !important;">
-                                {{ $datiVeicolo?->proprietario?->sede_legale_cap ?? '' }}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">TELEFONO:</td>
-                            <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                {{ "**********" /*$datiVeicolo?->proprietario?->phone ?? ''*/ }}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">PARTITA IVA:</td>
-                            <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                {{ $datiVeicolo?->proprietario?->vat ?? '' }}
-                            </td>
-                        </tr>
-                    @else
-                        <tr>
-                            <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">COGNOME:</td>
-                            <td width="25%" class="veicolo-content-cell">
-                                {{ $datiVeicolo?->proprietario?->lastname ?? '' }}
-                            </td>
-                            <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">NOME:</td>
-                            <td width="35%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                {{ $datiVeicolo?->proprietario?->firstname ?? '' }}
-                            </td>
-                        </tr>
-                        <tr>
-                            <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">NATO A:</td>
-                            <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                @if ($datiVeicolo?->proprietario?->nazionalita == 1)
-                                    {{ $datiVeicolo?->proprietario?->birth_town_id_value?->title ?? 'N/A' }}
-                                @else
-                                    {{ $datiVeicolo?->proprietario?->localita_straniera ?? '' }}
-                                @endif
-                            </td>
-                            <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">NATO IL:</td>
-                            <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                {{ (!empty($datiVeicolo?->proprietario?->birth_date) && Carbon\Carbon::parse($datiVeicolo->proprietario->birth_date)->year > 0) ? Carbon\Carbon::parse($datiVeicolo->proprietario->birth_date)->format('d/m/Y') : '-' }}
-                            </td>
-                        </tr>
-
-                        @if (!$datiVeicolo?->proprietario?->residenza_town_id)
-                            <tr>
-                                <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">RESIDENTE A:</td>
-                                <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                    {{ $datiVeicolo?->proprietario?->residenza_town_id_value?->title ?? '' }}
-                                </td>
-                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">IN</td>
+                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">TELEFONO:</td>
                                 <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                    {{ $datiVeicolo?->proprietario?->residenza_address ?? '' }}
+                                    {{ "**********" /*$datiVeicolo?->proprietario?->phone ?? ''*/ }}
                                 </td>
                             </tr>
-                        @endif
-
-                        @if ($datiVeicolo?->proprietario?->documento_tipo || $datiVeicolo?->proprietario?->documento_numero)
                             <tr>
-                                <td width="20%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">DOCUMENTO:</td>
-                                <td width="20%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                    {{ $documentTypes[$datiVeicolo?->proprietario?->documento_tipo] ?? '' }}
-                                </td>
-                                <td width="30%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">NUMERO:</td>
+                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">PARTITA IVA:</td>
                                 <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                    {{ $datiVeicolo?->proprietario?->documento_numero ?? '' }}
-                                </td>
-                            </tr>
-                        @endif
-
-                        @if (!$datiVeicolo?->proprietario?->foreign_country)
-                            @php
-                                $rilDa = $rilasciataDaMap[$datiVeicolo?->proprietario?->documento_rilasciato_da] ?? '';
-                            @endphp
-                            <tr>
-                                <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">RILASCIATA DA:</td>
-                                <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">{{ $rilDa }}</td>
-                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">DI</td>
-                                <td width="35%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                    {{ $datiVeicolo?->proprietario?->documento_rilasciato_da_town_id_value?->title ?? '' }}
+                                    {{ $datiVeicolo?->proprietario?->vat ?? '' }}
                                 </td>
                             </tr>
                         @else
                             <tr>
-                                <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">RILASCIATA DA:</td>
-                                <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                    {{ $datiVeicolo?->proprietario?->docuemento_rilasciato_da_di_altro ?? '' }}
+                                <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">COGNOME:</td>
+                                <td width="25%" class="veicolo-content-cell">
+                                    {{ $datiVeicolo?->proprietario?->lastname ?? '' }}
                                 </td>
-                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">DI:</td>
+                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">NOME:</td>
                                 <td width="35%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                    {{ $datiVeicolo?->proprietario?->documento_rilasciato_da_di_foreign_country_value?->name ?? '' }}{{ $datiVeicolo?->proprietario?->documento_rilasciato_da_di_foreign_localita ?? '' }}
+                                    {{ $datiVeicolo?->proprietario?->firstname ?? '' }}
                                 </td>
                             </tr>
-                        @endif
-
-                        @if ($datiVeicolo?->proprietario?->mobile ?? '')
                             <tr>
-                                <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">TELEFONO:</td>
+                                <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">NATO A:</td>
+                                <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
+                                    @if ($datiVeicolo?->proprietario?->nazionalita == 1)
+                                        {{ $datiVeicolo?->proprietario?->birth_town_id_value?->title ?? 'N/A' }}
+                                    @else
+                                        {{ $datiVeicolo?->proprietario?->localita_straniera ?? '' }}
+                                    @endif
+                                </td>
+                                <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">NATO IL:</td>
                                 <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
-                                    {{ "**********" /*$datiVeicolo?->proprietario?->mobile ?? ''*/ }}
+                                    {{ (!empty($datiVeicolo?->proprietario?->birth_date) && Carbon\Carbon::parse($datiVeicolo->proprietario->birth_date)->year > 0) ? Carbon\Carbon::parse($datiVeicolo->proprietario->birth_date)->format('d/m/Y') : '-' }}
                                 </td>
                             </tr>
+
+                            @if (!$datiVeicolo?->proprietario?->residenza_town_id)
+                                <tr>
+                                    <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">RESIDENTE A:</td>
+                                    <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
+                                        {{ $datiVeicolo?->proprietario?->residenza_town_id_value?->title ?? '' }}
+                                    </td>
+                                    <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">IN</td>
+                                    <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
+                                        {{ $datiVeicolo?->proprietario?->residenza_address ?? '' }}
+                                    </td>
+                                </tr>
+                            @endif
+
+                            @if ($datiVeicolo?->proprietario?->documento_tipo || $datiVeicolo?->proprietario?->documento_numero)
+                                <tr>
+                                    <td width="20%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">DOCUMENTO:</td>
+                                    <td width="20%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
+                                        {{ $documentTypes[$datiVeicolo?->proprietario?->documento_tipo] ?? '' }}
+                                    </td>
+                                    <td width="30%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">NUMERO:</td>
+                                    <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
+                                        {{ $datiVeicolo?->proprietario?->documento_numero ?? '' }}
+                                    </td>
+                                </tr>
+                            @endif
+
+                            @if (!$datiVeicolo?->proprietario?->foreign_country)
+                                @php
+                                    $rilDa = $rilasciataDaMap[$datiVeicolo?->proprietario?->documento_rilasciato_da] ?? '';
+                                @endphp
+                                <tr>
+                                    <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">RILASCIATA DA:</td>
+                                    <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">{{ $rilDa }}</td>
+                                    <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">DI</td>
+                                    <td width="35%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
+                                        {{ $datiVeicolo?->proprietario?->documento_rilasciato_da_town_id_value?->title ?? '' }}
+                                    </td>
+                                </tr>
+                            @else
+                                <tr>
+                                    <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">RILASCIATA DA:</td>
+                                    <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
+                                        {{ $datiVeicolo?->proprietario?->docuemento_rilasciato_da_di_altro ?? '' }}
+                                    </td>
+                                    <td width="25%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">DI:</td>
+                                    <td width="35%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
+                                        {{ $datiVeicolo?->proprietario?->documento_rilasciato_da_di_foreign_country_value?->name ?? '' }}{{ $datiVeicolo?->proprietario?->documento_rilasciato_da_di_foreign_localita ?? '' }}
+                                    </td>
+                                </tr>
+                            @endif
+
+                            @if ($datiVeicolo?->proprietario?->mobile ?? '')
+                                <tr>
+                                    <td width="15%" class="veicolo-title-cell" style="padding-bottom: 10px !important;">TELEFONO:</td>
+                                    <td width="25%" class="veicolo-content-cell" style="padding-bottom: 10px !important;">
+                                        {{ "**********" /*$datiVeicolo?->proprietario?->mobile ?? ''*/ }}
+                                    </td>
+                                </tr>
+                            @endif
                         @endif
-                    @endif
-                </table>
-            </td>
-        </tr>
-    </table>
+                    </table>
+                </td>
+            </tr>
+        </table>
+    @endif
 @endif

+ 2 - 1
resources/views/layouts/app.blade.php

@@ -207,12 +207,13 @@
                         <p>Segnalazione verticale</p>
                     </a>
                 </li>
+                <!--
                 <li class="nav-item">
                     <a href="/stradario" class="nav-link">
                         <p>Stradario</p>
                     </a>
                 </li>
-
+            -->
                 <li class="nav-item">
                     <a href="/tipo-danno" class="nav-link">
                         <p>Tipo di danno</p>

+ 77 - 2
resources/views/livewire/report.blade.php

@@ -53,8 +53,9 @@
     <script src="/plugins/select2/js/select2.min.js"></script>
     <script src="/plugins/bootstrap-switch/js/bootstrap-switch.min.js"></script>
     <script>
-        var maxDamageColumns = 4;
+        var maxDamageColumns = 8;
         var displayedDamageColumns = 1;
+        var ind = [];
 
         function loadCoordinates()
         {
@@ -158,12 +159,38 @@
                         url: ajaxUrl,
                         dataType: 'json'
                     },
+                    tags: true,
+                    createTag: function (params) {
+                        var term = $.trim(params.term);
+                        if (term === '') {
+                            return null;
+                        }         
+                        return {
+                            id: -1 * (Date.now()),
+                            text: term,
+                            newTag: true // add additional parameters
+                        }
+                    },
                     dropdownParent: value === "vei_carta_circolazione_rilasciata_da_di" ? $('#veicoloParte') : null,
                 });
 
                 $('.' + value).on('change', function (e) {
                     var data = $('.' + value).select2("val");
-                    @this.set(value, data);
+                    // Se data = 0 creo l'indirizzo
+                    
+                    if (data < 0)
+                    {
+                        if (!ind.includes(data))
+                        {
+                            ind.push(data);
+                            var text = $('.' + value).select2('data')[0].text;
+                            @this.createAddress(value, data, text);
+                        }
+                    }
+                    else
+                    {
+                        @this.set(value, data);
+                    }
                 });
             }
 
@@ -641,6 +668,17 @@
                 @this.set('polizza_num', $(this).val());
             });
 
+            $('.chkPneumaticiDiversi').on('click', function (e) {
+                if ($(this).val() == 1)
+                {
+                    $("#divPneumaticiPosteriori").show();
+                }
+                else
+                {
+                    $("#divPneumaticiPosteriori").hide();
+                }
+            });
+
 
         });
 
@@ -788,6 +826,13 @@
             });
         });
 
+        Livewire.on('fileSize', function (txt) {
+            console.log("QUA" + txt);
+            setTimeout(function() {
+                $("#fileSize").html(txt);
+            }, 200);
+        });
+
         Livewire.on('updateAnagrafica', (data, progressive) => {
             @this.updateAnagraficaParteCoinvolta(data, progressive);
         });
@@ -850,6 +895,8 @@
             @this.set('valida_al', $(this).val());
         });
 
+        
+
         function printReport(id) {
             setTimeout(function() {
                 window.open("/print-pdf/" + id); 
@@ -862,6 +909,34 @@
             }, 500);
         }        
 
+        function addMarca()
+        {
+            var marca = prompt('Inserisci la marca');
+            @this.addMarca(marca);
+        }
+
+        function addModello()
+        {
+            var marca = prompt('Inserisci il modello');
+            @this.addModello(marca);
+        }
+
+        Livewire.on('reloadMarche', (id, name) => {
+            @this.reloadMarche(id);
+            $('#vei_marca_id').append($('<option>', { 
+                value: id,
+                text : name
+            }));
+        });
+
+        Livewire.on('reloadModelli', (id, name) => {
+            @this.reloadModelli(id);
+            $('#vei_modello_id').append($('<option>', { 
+                value: id,
+                text : name
+            }));
+        });
+
     </script>
 
 @endpush