FabioFratini преди 10 месеца
родител
ревизия
b3ad2d1be9
променени са 3 файла, в които са добавени 68 реда и са изтрити 3 реда
  1. 3 2
      app/Http/Livewire/PaymentMethod.php
  2. 39 0
      app/Http/Livewire/Receipt.php
  3. 26 1
      resources/views/livewire/receipt.blade.php

+ 3 - 2
app/Http/Livewire/PaymentMethod.php

@@ -3,6 +3,7 @@
 namespace App\Http\Livewire;
 
 use Livewire\Component;
+use Illuminate\Support\Facades\Auth;
 
 class PaymentMethod extends Component
 {
@@ -44,7 +45,7 @@ class PaymentMethod extends Component
 
     public function mount(){
 
-        if(\Auth::user()->level != env('LEVEL_ADMIN', 0))
+        if(Auth::user()->level != env('LEVEL_ADMIN', 0))
             return redirect()->to('/dashboard');
 
         $this->banks = \App\Models\Bank::select('id', 'name')->get();
@@ -146,7 +147,7 @@ class PaymentMethod extends Component
             session()->flash('success',"Metodo pagamento eliminato");
             return redirect(request()->header('Referer'));
         }catch(\Exception $e){
-            session()->flash('error','Errore (' . $ex->getMessage() . ')');
+            session()->flash('error','Errore (' . $e->getMessage() . ')');
         }
     }
 }

+ 39 - 0
app/Http/Livewire/Receipt.php

@@ -4,6 +4,9 @@ namespace App\Http\Livewire;
 
 use Livewire\Component;
 use Barryvdh\DomPDF\Facade\Pdf;
+use Illuminate\Support\Facades\Log;
+use SimpleXMLElement;
+
 
 class Receipt extends Component
 {
@@ -58,6 +61,42 @@ class Receipt extends Component
 
     }
 
+    public function importReceipts()
+    {
+        $this->validate([
+            'receiptFile' => 'required|mimes:xml|max:2048',
+        ]);
+
+        try {
+            $xmlString = file_get_contents($this->receiptFile->getRealPath());
+            $xml = new SimpleXMLElement($xmlString);
+            Log::info('XML Data: ' . print_r($xml, true));
+
+            // Extract data from XML and create receipts
+            foreach ($xml->receipt as $receiptData) {
+                Log::info('Receipt Data: ' . print_r($receiptData, true));
+                $member = \App\Models\Member::where('fiscal_code', (string)$receiptData->fiscal_code)->first();
+
+                if ($member) {
+                    $receipt = new \App\Models\Receipt();
+                    $receipt->member_id = $member->id;
+                    $receipt->date = (string)$receiptData->date;
+                    $receipt->amount = (float)$receiptData->amount;
+                    $receipt->number = (string)$receiptData->number;
+                    $receipt->year = (int)$receiptData->year;
+                    $receipt->save();
+                }
+            }
+
+            session()->flash('message', 'Ricevute importate con successo.');
+        } catch (\Exception $e) {
+            session()->flash('error', 'Errore durante l\'importazione del file XML: ' . $e->getMessage());
+        }
+
+        $this->reset('receiptFile');
+        $this->emit('load-data-table');
+    }
+
     public function search()
     {
         $this->hasFilter = true;

+ 26 - 1
resources/views/livewire/receipt.blade.php

@@ -61,7 +61,11 @@
         </div>
         <hr size="1">
     </div>
-
+    <div class="title--section_addButton">
+        <button type="button" class="btn--ui entrata d-flex justify-items-between" data-bs-toggle="modal" data-bs-target="#importModal">
+            Importa
+        </button>
+    </div>
     <section id="resume-table">
         <div class="compare--chart_wrapper d-none"></div>
 
@@ -108,6 +112,27 @@
 
 </div>
 
+<div class="modal fade" id="importModal" tabindex="-1" aria-labelledby="importModalLabel" aria-hidden="true">
+    <div class="modal-dialog">
+        <div class="modal-content">
+            <div class="modal-header">
+                <h5 class="modal-title" id="importModalLabel">Importa Ricevute</h5>
+                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
+            </div>
+            <div class="modal-body">
+                <form wire:submit.prevent="importReceipts">
+                    <div class="mb-3">
+                        <label for="receiptFile" class="form-label">Seleziona File</label>
+                        <input type="file" class="form-control" id="receiptFile" wire:model="receiptFile">
+                        @error('receiptFile') <span class="text-danger">{{ $message }}</span> @enderror
+                    </div>
+                    <button type="submit" class="btn--ui">Importa</button>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+
 
 @push('scripts')
     <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />