FabioFratini 9 месяцев назад
Родитель
Сommit
e4ff1decf3
2 измененных файлов с 38 добавлено и 5 удалено
  1. 13 5
      app/Http/Livewire/RecordOUT.php
  2. 25 0
      resources/views/livewire/records_out.blade.php

+ 13 - 5
app/Http/Livewire/RecordOUT.php

@@ -645,8 +645,12 @@ class RecordOUT extends Component
         try {
             $importCount = 0;
             $errorsCount = 0;
+            $totalFiles = count($this->receiptFiles);
 
-            foreach ($this->receiptFiles as $receiptFile) {
+            // disabilita select
+            $this->emit('import-started');
+
+            foreach ($this->receiptFiles as $index => $receiptFile) {
                 try {
                     // Carica e analizza il file XML
                     $xmlString = file_get_contents($receiptFile->getRealPath());
@@ -683,18 +687,22 @@ class RecordOUT extends Component
                     Log::error('Errore durante l\'importazione della fattura: ' . $e->getMessage());
                     $errorsCount++;
                 }
+
+                $progress = ($index + 1) / $totalFiles * 100;
+                $this->emit('update-progress', $progress);
             }
 
-            // Mostra messaggi appropriati
             $this->showResultMessages($importCount, $errorsCount);
         } catch (\Exception $e) {
             Log::error('Errore durante l\'importazione dei file XML: ' . $e->getMessage());
             session()->flash('error', 'Errore durante l\'importazione: ' . $e->getMessage());
-        }
+        } finally {
+            $this->emit('import-finished');
 
-        $this->closeImportModal();
+            $this->closeImportModal();
+            $this->emit('load-data-table');
+        }
     }
-
     /**
      * Estrae i dati dalla fattura elettronica XML
      */

+ 25 - 0
resources/views/livewire/records_out.blade.php

@@ -53,6 +53,12 @@
                             <label for="receiptFiles" class="form-label">Seleziona Files</label>
                             <input type="file" class="form-control" id="receiptFiles" wire:model="receiptFiles" multiple>
                             @error('receiptFiles.*') <span class="text-danger">{{ $message }}</span> @enderror
+                            <small class="form-text text-muted">Massimo {{ ini_get('max_file_uploads') }} file consentiti.</small>
+                        </div>
+                        <div class="progress mb-2" wire:ignore>
+                            <div class="progress-bar" role="progressbar" style="width: 0%" aria-valuenow="0"
+                                 aria-valuemin="0" aria-valuemax="100">0%
+                            </div>
                         </div>
                         <button type="submit" class="btn--ui">Importa</button>
                         <button type="button" class="btn--ui lightGrey" onclick="closeImportModal()">Annulla</button>
@@ -1060,6 +1066,25 @@
         }, 100);
     }
 
+    Livewire.on('update-progress', (progress) => {
+        const progressBar = document.querySelector('.progress-bar');
+        progressBar.style.width = `${progress}%`;
+        progressBar.setAttribute('aria-valuenow', progress);
+        progressBar.textContent = `${progress}%`;
+    });
+
+    Livewire.on('import-started', () => {
+        window.selectedCausalValue = $('.import-causal-select').val();
+
+        $('.import-causal-select').prop('disabled', true);
+    });
+
+    Livewire.on('import-finished', () => {
+        $('.import-causal-select').prop('disabled', false);
+        $('.import-causal-select').val(window.selectedCausalValue).trigger('change');
+
+    });
+
     </script>
 
 @endpush