Quellcode durchsuchen

fix save anagrafica comune

FabioFratini vor 11 Monaten
Ursprung
Commit
565bf02fe9
1 geänderte Dateien mit 162 neuen und 146 gelöschten Zeilen
  1. 162 146
      app/Http/Livewire/Traits/HasAnagrafica.php

+ 162 - 146
app/Http/Livewire/Traits/HasAnagrafica.php

@@ -288,148 +288,156 @@ trait HasAnagrafica{
     }
 
     public function anagraficaDataParteComuneSave(){
-
-        ReportDataVeicoli::where('progressive', $this->currentProgressive)->where('report_id', $this->dataId)->delete();
-        \App\Models\ReportDataInfortunati::where('progressive', $this->currentProgressive)->where('report_id', $this->dataId)->delete();
-        \App\Models\ReportDataPasseggeri::where('progressive', $this->currentProgressive)->where('report_id', $this->dataId)->delete();
-        \App\Models\ReportDataUsoDelCascoOmologazione::where('progressive', $this->currentProgressive)->where('report_id', $this->dataId)->delete();
-        \App\Models\ReportDataUsoDelCasco::where('progressive', $this->currentProgressive)->where('report_id', $this->dataId)->delete();
-        \App\Models\ReportDataCintureSicurezza::where('progressive', $this->currentProgressive)->where('report_id', $this->dataId)->delete();
-
-        try {
-            ReportDataVeicoli::create([
-                'progressive' => $this->currentProgressive,
-                'report_id' => $this->dataId,
-                'veicolo' => $this->currentVeicolo,
-                'chilometri_percorsi' => $this->data_chilometri_percorsi,
-                'stato_veicolo' => $this->data_stato_veicolo,
-                'polizze' => $this->data_polizze,
-                'proprietari' => $this->data_proprietari,
-                'coproprietari' => $this->data_coproprietari,
-                'conducente_uguale_proprietario' => $this->data_conducente_uguale_proprietario,
-                'conducenti' => $this->data_conducenti,
-                'infortunato' => $this->data_infortunato,
-                'infortunato_ospedale' => $this->data_infortunato_ospedale,
-                'patente_al_seguito' => $this->data_patente_al_seguito,
-                'generalizzato' => $this->data_generalizzato,
-                'generalizzato_altrove' => $this->data_generalizzato_altrove,
-                'posizione_statica_finale' => $this->data_posizione_statica_finale,
-                'danni_visibili_riportati' => $this->data_danni_visibili_riportati,
-                'danni_visibili_pre_esistenti' => $this->data_danni_visibili_pre_esistenti,
-                'destinazione_veicolo' => $this->data_destinazione_veicolo,
-                'destinazione_veicolo_affidato_a' => $this->data_destinazione_veicolo_affidato_a,
-                'destinazione_veicolo_sequestro_num_art' => $this->data_destinazione_veicolo_sequestro_num_art,
-                'destinazione_veicolo_amministrativo_num' => $this->data_destinazione_veicolo_amministrativo_num,
-                '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,
-                'stato_pneumatici' => $this->data_stato_pneumatici,
-                'marca_pneumatici' => $this->data_marca_pneumatici,
-                'misura_pneumatici' => $this->data_misura_pneumatici,
-                'dispositivi_ottici' => $this->data_dispositivi_ottici,
-                'tergicristalli' => $this->data_tergicristalli,
-                'segnale_pericolo' => $this->data_segnale_pericolo,
-                'abs' => $this->data_abs,
-                'gps' => $this->data_gps,
-                'marcia_inserita' => $this->data_marcia_inserita,
-                'cristallo' => $this->data_cristallo,
-                'cristallo_posizione' => $this->data_cristallo_posizione,
-                'specchio_retrovisore' => $this->data_specchio_retrovisore,
-                'specchio_lat_dx' => $this->data_specchio_lat_dx,
-                'specchio_lat_sx' => $this->data_specchio_lat_sx,
-                'attivazione_airbag' => $this->data_attivazione_airbag,
-                'airbag_posizione' => $this->data_airbag_posizione,
-                'alcool_test' => $this->data_alcool_test,
-                'alcool_test_esito' => $this->data_alcool_test_esito,
-                'drug_test' => $this->data_drug_test,
-                'drug_test_esito' => $this->data_drug_test_esito,
-                'sistema_ritenuta_minori' => $this->data_sistema_ritenuta_minori,
-                'sistema_ritenuta_minori_omologazione' => $this->data_sistema_ritenuta_minori_omologazione,
-                'verbale_violazione_numero_1' => $this->data_verbale_violazione_numero_1,
-                'articolo_violato_1' => $this->data_articolo_violato_1,
-                'cds_1' => $this->data_cds_1,
-                'verbale_violazione_numero_2' => $this->data_verbale_violazione_numero_2,
-                'articolo_violato_2' => $this->data_articolo_violato_2,
-                'cds_2' => $this->data_cds_2,
-                'verbale_violazione_numero_3' => $this->data_verbale_violazione_numero_3,
-                'articolo_violato_3' => $this->data_articolo_violato_3,
-                'cds_3' => $this->data_cds_3,
-                'conducente_patente_numero' => $this->data_conducente_patente_numero,
-                'conducente_patente_categoria' => $this->data_conducente_patente_categoria,
-                'conducente_patente_rilasciata_da' => $this->data_conducente_patente_rilasciata_da,
-                'conducente_patente_rilasciata_da_altro' => $this->data_conducente_patente_rilasciata_da_altro,
-                'conducente_patente_rilasciata_il' => $this->data_conducente_patente_rilasciata_il,
-                'conducente_patente_scadenza' => $this->data_conducente_patente_scadenza,
-                'conducente_patente_prescrizioni' => $this->data_conducente_patente_prescrizioni,
-                'conducente_patente_limitazioni_art_117_1' => $this->data_conducente_patente_limitazioni_art_117_1,
-                'conducente_patente_limitazioni_art_117_2' => $this->data_conducente_patente_limitazioni_art_117_2,
-                'conducente_patente_abilitazione' => $this->data_conducente_patente_abilitazione,
-                'conducente_patente_abilitazione_numero' => $this->data_conducente_patente_abilitazione_numero,
-                'conducente_patente_abilitazione_rilasciata_da' => $this->data_conducente_patente_abilitazione_rilasciata_da,
-                'conducente_patente_abilitazione_rilasciata_il' => $this->data_conducente_patente_abilitazione_rilasciata_il,
-                'conducente_documento' => $this->data_conducente_documento,
-                'conducente_documento_numero' => $this->data_conducente_documento_numero,
-                'conducente_sedicente' => $this->data_conducente_sedicente,
-                'tipo_danno' => $this->data_tipo_danno > 0 ? $this->data_tipo_danno : null,
-                'entita_danno' => $this->data_entita_danno > 0 ? $this->data_entita_danno : null,
-                'effetto_danno' => $this->data_effetto_danno > 0 ? $this->data_effetto_danno : null,
-                'parte_macchina' => $this->data_parte_macchina > 0 ? $this->data_parte_macchina : null,
-                'tipo_danno_2' => $this->data_tipo_danno_2 > 0 ? $this->data_tipo_danno_2 : null,
-                'entita_danno_2' => $this->data_entita_danno_2 > 0 ? $this->data_entita_danno_2 : null,
-                'effetto_danno_2' => $this->data_effetto_danno_2 > 0 ? $this->data_effetto_danno_2 : null,
-                'parte_macchina_2' => $this->data_parte_macchina_2 > 0 ? $this->data_parte_macchina_2 : null,
-                'tipo_danno_3' => $this->data_tipo_danno_3 > 0 ? $this->data_tipo_danno_3 : null,
-                'entita_danno_3' => $this->data_entita_danno_3 > 0 ? $this->data_entita_danno_3 : null,
-                'effetto_danno_3' => $this->data_effetto_danno_3 > 0 ? $this->data_effetto_danno_3 : null,
-                'parte_macchina_3' => $this->data_parte_macchina_3 > 0 ? $this->data_parte_macchina_3 : null,
-                '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
-            ]);
-            session()->flash('success','Record creato');
-
-        } catch (\Exception $ex) {
-            session()->flash('error','Errore in fase di salvataggio (' . $ex->getMessage() . ')');
-        }
-
-        try {
-            \App\Models\ReportDataCintureSicurezza::create([
-                'progressive' => $this->currentProgressive,
-                'report_id' => $this->dataId,
-                'conducente' => $this->data_cinture_conducente,
-                'passeggeri_0' => $this->data_cinture_passeggeri_0,
-                'passeggeri_1' => $this->data_cinture_passeggeri_1,
-                'passeggeri_2' => $this->data_cinture_passeggeri_2,
-                'passeggeri_3' => $this->data_cinture_passeggeri_3
-            ]);
-        } catch (\Exception $ex) {
-            session()->flash('error','Errore in fase di salvataggio (' . $ex->getMessage() . ')');
-        }
-
-        try {
-            \App\Models\ReportDataUsoDelCasco::create([
-                'progressive' => $this->currentProgressive,
-                'report_id' => $this->dataId,
-                'conducente' => $this->data_casco_conducente,
-                'passeggeri' => $this->data_casco_passeggero
-            ]);
-        } catch (\Exception $ex) {
-            session()->flash('error','Errore in fase di salvataggio (' . $ex->getMessage() . ')');
-        }
-
-        try {
-            \App\Models\ReportDataUsoDelCascoOmologazione::create([
-                'progressive' => $this->currentProgressive,
-                'report_id' => $this->dataId,
-                'conducente' => $this->data_casco_omologazione_conducente,
-                'passeggeri' => $this->data_casco_omologazione_passeggero
-            ]);
-        } catch (\Exception $ex) {
-            session()->flash('error','Errore in fase di salvataggio (' . $ex->getMessage() . ')');
-        }
+        // Start a database transaction to ensure data consistency
+        \DB::beginTransaction();
 
         try {
+            // Log current vehicle value for debugging
+            \Log::info('Current vehicle value: ' . $this->currentVeicolo);
+            \Log::info('Current progressive: ' . $this->currentProgressive);
+            \Log::info('Current report ID: ' . $this->dataId);
+
+            // Update ReportDataVeicoli instead of delete/create
+            $veicolo = ReportDataVeicoli::updateOrCreate(
+                [
+                    'progressive' => $this->currentProgressive,
+                    'report_id' => $this->dataId
+                ],
+                [
+                    'veicolo' => $this->currentVeicolo,
+                    'chilometri_percorsi' => $this->data_chilometri_percorsi,
+                    'stato_veicolo' => $this->data_stato_veicolo,
+                    'polizze' => $this->data_polizze,
+                    'proprietari' => $this->data_proprietari,
+                    'coproprietari' => $this->data_coproprietari,
+                    'conducente_uguale_proprietario' => $this->data_conducente_uguale_proprietario,
+                    'conducenti' => $this->data_conducenti,
+                    'infortunato' => $this->data_infortunato,
+                    'infortunato_ospedale' => $this->data_infortunato_ospedale,
+                    'patente_al_seguito' => $this->data_patente_al_seguito,
+                    'generalizzato' => $this->data_generalizzato,
+                    'generalizzato_altrove' => $this->data_generalizzato_altrove,
+                    'posizione_statica_finale' => $this->data_posizione_statica_finale,
+                    'danni_visibili_riportati' => $this->data_danni_visibili_riportati,
+                    'danni_visibili_pre_esistenti' => $this->data_danni_visibili_pre_esistenti,
+                    'destinazione_veicolo' => $this->data_destinazione_veicolo,
+                    'destinazione_veicolo_affidato_a' => $this->data_destinazione_veicolo_affidato_a,
+                    'destinazione_veicolo_sequestro_num_art' => $this->data_destinazione_veicolo_sequestro_num_art,
+                    'destinazione_veicolo_amministrativo_num' => $this->data_destinazione_veicolo_amministrativo_num,
+                    '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,
+                    'stato_pneumatici' => $this->data_stato_pneumatici,
+                    'marca_pneumatici' => $this->data_marca_pneumatici,
+                    'misura_pneumatici' => $this->data_misura_pneumatici,
+                    'dispositivi_ottici' => $this->data_dispositivi_ottici,
+                    'tergicristalli' => $this->data_tergicristalli,
+                    'segnale_pericolo' => $this->data_segnale_pericolo,
+                    'abs' => $this->data_abs,
+                    'gps' => $this->data_gps,
+                    'marcia_inserita' => $this->data_marcia_inserita,
+                    'cristallo' => $this->data_cristallo,
+                    'cristallo_posizione' => $this->data_cristallo_posizione,
+                    'specchio_retrovisore' => $this->data_specchio_retrovisore,
+                    'specchio_lat_dx' => $this->data_specchio_lat_dx,
+                    'specchio_lat_sx' => $this->data_specchio_lat_sx,
+                    'attivazione_airbag' => $this->data_attivazione_airbag,
+                    'airbag_posizione' => $this->data_airbag_posizione,
+                    'alcool_test' => $this->data_alcool_test,
+                    'alcool_test_esito' => $this->data_alcool_test_esito,
+                    'drug_test' => $this->data_drug_test,
+                    'drug_test_esito' => $this->data_drug_test_esito,
+                    'sistema_ritenuta_minori' => $this->data_sistema_ritenuta_minori,
+                    'sistema_ritenuta_minori_omologazione' => $this->data_sistema_ritenuta_minori_omologazione,
+                    'verbale_violazione_numero_1' => $this->data_verbale_violazione_numero_1,
+                    'articolo_violato_1' => $this->data_articolo_violato_1,
+                    'cds_1' => $this->data_cds_1,
+                    'verbale_violazione_numero_2' => $this->data_verbale_violazione_numero_2,
+                    'articolo_violato_2' => $this->data_articolo_violato_2,
+                    'cds_2' => $this->data_cds_2,
+                    'verbale_violazione_numero_3' => $this->data_verbale_violazione_numero_3,
+                    'articolo_violato_3' => $this->data_articolo_violato_3,
+                    'cds_3' => $this->data_cds_3,
+                    'conducente_patente_numero' => $this->data_conducente_patente_numero,
+                    'conducente_patente_categoria' => $this->data_conducente_patente_categoria,
+                    'conducente_patente_rilasciata_da' => $this->data_conducente_patente_rilasciata_da,
+                    'conducente_patente_rilasciata_da_altro' => $this->data_conducente_patente_rilasciata_da_altro,
+                    'conducente_patente_rilasciata_il' => $this->data_conducente_patente_rilasciata_il,
+                    'conducente_patente_scadenza' => $this->data_conducente_patente_scadenza,
+                    'conducente_patente_prescrizioni' => $this->data_conducente_patente_prescrizioni,
+                    'conducente_patente_limitazioni_art_117_1' => $this->data_conducente_patente_limitazioni_art_117_1,
+                    'conducente_patente_limitazioni_art_117_2' => $this->data_conducente_patente_limitazioni_art_117_2,
+                    'conducente_patente_abilitazione' => $this->data_conducente_patente_abilitazione,
+                    'conducente_patente_abilitazione_numero' => $this->data_conducente_patente_abilitazione_numero,
+                    'conducente_patente_abilitazione_rilasciata_da' => $this->data_conducente_patente_abilitazione_rilasciata_da,
+                    'conducente_patente_abilitazione_rilasciata_il' => $this->data_conducente_patente_abilitazione_rilasciata_il,
+                    'conducente_documento' => $this->data_conducente_documento,
+                    'conducente_documento_numero' => $this->data_conducente_documento_numero,
+                    'conducente_sedicente' => $this->data_conducente_sedicente,
+                    'tipo_danno' => $this->data_tipo_danno > 0 ? $this->data_tipo_danno : null,
+                    'entita_danno' => $this->data_entita_danno > 0 ? $this->data_entita_danno : null,
+                    'effetto_danno' => $this->data_effetto_danno > 0 ? $this->data_effetto_danno : null,
+                    'parte_macchina' => $this->data_parte_macchina > 0 ? $this->data_parte_macchina : null,
+                    'tipo_danno_2' => $this->data_tipo_danno_2 > 0 ? $this->data_tipo_danno_2 : null,
+                    'entita_danno_2' => $this->data_entita_danno_2 > 0 ? $this->data_entita_danno_2 : null,
+                    'effetto_danno_2' => $this->data_effetto_danno_2 > 0 ? $this->data_effetto_danno_2 : null,
+                    'parte_macchina_2' => $this->data_parte_macchina_2 > 0 ? $this->data_parte_macchina_2 : null,
+                    'tipo_danno_3' => $this->data_tipo_danno_3 > 0 ? $this->data_tipo_danno_3 : null,
+                    'entita_danno_3' => $this->data_entita_danno_3 > 0 ? $this->data_entita_danno_3 : null,
+                    'effetto_danno_3' => $this->data_effetto_danno_3 > 0 ? $this->data_effetto_danno_3 : null,
+                    'parte_macchina_3' => $this->data_parte_macchina_3 > 0 ? $this->data_parte_macchina_3 : null,
+                    '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
+                ]
+            );
+
+            // Update or create ReportDataCintureSicurezza
+            \App\Models\ReportDataCintureSicurezza::updateOrCreate(
+                [
+                    'progressive' => $this->currentProgressive,
+                    'report_id' => $this->dataId
+                ],
+                [
+                    'conducente' => $this->data_cinture_conducente,
+                    'passeggeri_0' => $this->data_cinture_passeggeri_0,
+                    'passeggeri_1' => $this->data_cinture_passeggeri_1,
+                    'passeggeri_2' => $this->data_cinture_passeggeri_2,
+                    'passeggeri_3' => $this->data_cinture_passeggeri_3
+                ]
+            );
+
+            // Update or create ReportDataUsoDelCasco
+            \App\Models\ReportDataUsoDelCasco::updateOrCreate(
+                [
+                    'progressive' => $this->currentProgressive,
+                    'report_id' => $this->dataId
+                ],
+                [
+                    'conducente' => $this->data_casco_conducente,
+                    'passeggeri' => $this->data_casco_passeggero
+                ]
+            );
+
+            // Update or create ReportDataUsoDelCascoOmologazione
+            \App\Models\ReportDataUsoDelCascoOmologazione::updateOrCreate(
+                [
+                    'progressive' => $this->currentProgressive,
+                    'report_id' => $this->dataId
+                ],
+                [
+                    'conducente' => $this->data_casco_omologazione_conducente,
+                    'passeggeri' => $this->data_casco_omologazione_passeggero
+                ]
+            );
+
+            // Delete existing passenger records first (since there might be multiple)
+            \App\Models\ReportDataPasseggeri::where('progressive', $this->currentProgressive)
+                ->where('report_id', $this->dataId)
+                ->delete();
+
+            // Create new passenger records
             \App\Models\ReportDataPasseggeri::create([
                 'progressive' => $this->currentProgressive,
                 'report_id' => $this->dataId,
@@ -458,12 +466,13 @@ trait HasAnagrafica{
                 'infortunato' => $this->data_infortunato_3,
                 'infortunato_ospedale' => $this->data_infortunato_ospedale_3
             ]);
-        } catch (\Exception $ex) {
-            session()->flash('error','Errore in fase di salvataggio (' . $ex->getMessage() . ')');
-        }
 
+            // Delete existing injured person records first
+            \App\Models\ReportDataInfortunati::where('progressive', $this->currentProgressive)
+                ->where('report_id', $this->dataId)
+                ->delete();
 
-        try {
+            // Create new injured person records
             \App\Models\ReportDataInfortunati::create([
                 'progressive' => $this->currentProgressive,
                 'report_id' => $this->dataId,
@@ -484,13 +493,20 @@ trait HasAnagrafica{
                 'report_id' => $this->dataId,
                 'infortunato' => $this->data_infortunato_extra_3
             ]);
+
+            // If we reach here, all operations succeeded
+            \DB::commit();
+            session()->flash('success', 'Record aggiornato');
+
         } catch (\Exception $ex) {
-            session()->flash('error','Errore in fase di salvataggio (' . $ex->getMessage() . ')');
+            // If any operation failed, roll back the transaction
+            \DB::rollBack();
+            \Log::error('Error in anagraficaDataParteComuneSave: ' . $ex->getMessage());
+            session()->flash('error', 'Errore in fase di aggiornamento (' . $ex->getMessage() . ')');
         }
 
         $this->resetVeicoloData();
         $this->emit('close-modal-parte-comune');
-
     }
 
     public function editAnagraficaParte($progressive) {