| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
- namespace App\Http\Livewire;
- use Livewire\Component;
- use Barryvdh\DomPDF\Facade\Pdf;
- use Illuminate\Support\Facades\Log;
- use SimpleXMLElement;
- use App\Models\Member;
- class Receipt extends Component
- {
- public $records;
- public $filterStatus = '';
- public $hasFilter = false;
- public $filterFrom = '', $filterTo = '';
- public $filteredMemberId = '';
- public $members = [];
- public function mount()
- {
- // Load members for the dropdown
- $this->members = Member::orderBy('last_name')->orderBy('first_name')->get();
- }
- public function updatedFilterFrom()
- {
- $this->emit('destroy-data-table');
- }
- public function updatedFilterTo()
- {
- $this->emit('destroy-data-table');
- }
- public function render()
- {
- if ($this->hasFilter)
- {
- $r = \App\Models\Receipt::with('member');
- if ($this->filterStatus != '')
- $r = $r->where('status', $this->filterStatus);
- if ($this->filterFrom != '')
- $r = $r->where('date', '>=', $this->filterFrom);
- if ($this->filterTo != '')
- $r = $r->where('date', '<=', $this->filterTo);
- if ($this->filteredMemberId != '')
- $r = $r->where('member_id', $this->filteredMemberId);
- $this->records = $r->get();
- }
- else
- {
- $this->records = \App\Models\Receipt::with('member')->get();
- }
- $this->emit('load-data-table');
- return view('livewire.receipt');
- }
- public function printReceipt($id)
- {
- $this->emit('load-data-table');
- $receipt = \App\Models\Receipt::findOrFail($id);
- //$pdf = PDF::loadView('pdf/receipt', array('datas' => $datas, 'from' => $x, 'to' => $y, 'who' => '', 'matricola' => $matricola));
- $pdf = PDF::loadView('receipt', array('receipt' => $receipt));//->output();
- return $pdf->stream('aaa.pdf');
- }
- 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 = 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;
- }
- public function disableSearch()
- {
- $this->filterStatus = "";
- $this->filterTo = '';
- $this->filterFrom = '';
- $this->filteredMemberId = '';
- $this->hasFilter = false;
- }
- }
|