Bläddra i källkod

filtro utente ricevute

FabioFratini 9 månader sedan
förälder
incheckning
23d935ef97
3 ändrade filer med 72 tillägg och 18 borttagningar
  1. 13 0
      app/Http/Livewire/Receipt.php
  2. 48 9
      resources/views/livewire/receipt.blade.php
  3. 11 9
      routes/web.php

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

@@ -4,6 +4,7 @@ namespace App\Http\Livewire;
 
 use Livewire\Component;
 use Barryvdh\DomPDF\Facade\Pdf;
+use App\Models\Member;
 
 class Receipt extends Component
 {
@@ -13,6 +14,15 @@ class Receipt extends Component
     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');
@@ -35,6 +45,8 @@ class Receipt extends Component
                 $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();
         }
@@ -68,6 +80,7 @@ class Receipt extends Component
         $this->filterStatus = "";
         $this->filterTo = '';
         $this->filterFrom = '';
+        $this->filteredMemberId = '';
         $this->hasFilter = false;
     }
 

+ 48 - 9
resources/views/livewire/receipt.blade.php

@@ -52,6 +52,22 @@
                     </div>
                 </div>
             </div>
+            <div class="col-md-3">
+                <div class="row">
+                    <div class="col-md-12" style="margin-bottom:10px;">
+                        <b>Utente</b>
+                    </div>
+                    <div class="col-12">
+                        <select class="form-select filterMember" wire:model="filteredMemberId">
+                            <option value="">--Seleziona Utente--</option>
+                            @foreach($members as $member)
+                                <option value="{{ $member->id }}">{{ $member->last_name }} {{ $member->first_name }}
+                                </option>
+                            @endforeach
+                        </select>
+                    </div>
+                </div>
+            </div>
         </div>
         <div class="row g-3">
             <div class="col-md-12" style="text-align:right">
@@ -94,9 +110,16 @@
                             <td>{{date("d/m/Y", strtotime($record->date))}}</td>
                             <td>{{formatPrice($record->rows->sum('amount'))}}</td>
                             <td>
-                                <button type="button" class="btn u" onclick="document.location.href='/in?id={{$record->record_id}}'" data-bs-toggle="popover"  data-bs-trigger="hover focus" data-bs-placement="bottom" data-bs-content="Visualizza ricevuta"><i class="fa-regular fa-eye"></i></button>
-                                <a target="_blank" class="btn  u" href="/receipt/{{$record->id}}" data-bs-toggle="popover"  data-bs-trigger="hover focus" data-bs-placement="bottom" data-bs-content="Stampa ricevuta"><i class="fa-regular fa-file-lines"></i></a>
-                                <a target="_blank" class="btn u" onclick="sendMail({{$record->id}})"><i class="fa-regular fa-envelope" data-bs-toggle="popover"  data-bs-trigger="hover focus" data-bs-placement="bottom" data-bs-content="Invia email"></i></a>
+                                <button type="button" class="btn u"
+                                    onclick="document.location.href='/in?id={{$record->record_id}}'" data-bs-toggle="popover"
+                                    data-bs-trigger="hover focus" data-bs-placement="bottom"
+                                    data-bs-content="Visualizza ricevuta"><i class="fa-regular fa-eye"></i></button>
+                                <a target="_blank" class="btn  u" href="/receipt/{{$record->id}}" data-bs-toggle="popover"
+                                    data-bs-trigger="hover focus" data-bs-placement="bottom"
+                                    data-bs-content="Stampa ricevuta"><i class="fa-regular fa-file-lines"></i></a>
+                                <a target="_blank" class="btn u" onclick="sendMail({{$record->id}})"><i
+                                        class="fa-regular fa-envelope" data-bs-toggle="popover" data-bs-trigger="hover focus"
+                                        data-bs-placement="bottom" data-bs-content="Invia email"></i></a>
                             </td>
                         </tr>
                     @endforeach
@@ -199,14 +222,20 @@
 @push('scripts')
     <script>
 
-        $(document).ready(function() {
+$(document).ready(function () {
             loadDataTable();
-        } );
+        });
+
+        $('.filterStatus').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+        $('.filterMember').select2({
+            "language": { "noResults": function () { return "Nessun risultato"; } }
+        });
 
-        $('.filterStatus').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
 
         Livewire.on('load-data-table', () => {
-            $('.filterStatus').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+            $('.filterStatus').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterMember').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+
             loadDataTable();
         });
 
@@ -262,6 +291,10 @@
             {
                 $('input[name="txtTo"]').val(filterFrom);
             }
+            var filterMember = localStorage.getItem("filterMemberReceipt");
+            if (filterMember) {
+                $('.filterMember').val(filterMember).trigger('change');
+            }
         @endif
 
         function reset()
@@ -269,6 +302,7 @@
             $(".todayButton").addClass("lightGrey");
             $(".yesterdayButton").addClass("lightGrey");
             $('.filterStatus').val(null).trigger("change");
+            $('.filterMember').val(null).trigger("change");
             $('.filterFrom').val('');
             $('.filterTo').val('');
             destroyDataTable();
@@ -290,11 +324,16 @@
             var filterTo = $('.filterTo').val();
             localStorage.setItem("filterToReeipt", filterTo);
 
+
+            var filterMember = $('.filterMember').val();
+            localStorage.setItem("filterMemberReceipt", filterMember);
+
+
             $('#tablesaw-350').DataTable({
                 serverSide: true,
                 ajax: {
-                    url : '/get_receipts?filterStatus=' + filterStatus + '&filterFrom=' + filterFrom + '&filterTo=' + filterTo,
-                    dataSrc: function (json){
+                    url: '/get_receipts?filterStatus=' + filterStatus + '&filterFrom=' + filterFrom + '&filterTo=' + filterTo + '&filterMember=' + filterMember,
+                    dataSrc: function (json) {
                         if(json.totals){
                             totals = json.totals;
                         }

+ 11 - 9
routes/web.php

@@ -1432,28 +1432,30 @@ Route::get('/get_course_members', function () {
 });
 
 Route::get('/get_receipts', function () {
+    $x = \App\Models\Receipt::select('receipts.*', 'members.first_name', 'members.last_name')
+        ->leftJoin('members', 'receipts.member_id', '=', 'members.id');
 
-
-    $x = \App\Models\Receipt::select('receipts.*', 'members.first_name', 'members.last_name')->leftJoin('members', 'receipts.member_id', '=', 'members.id');
     if (isset($_GET["search"]["value"])) {
         $v = str_replace("'", "\'", stripcslashes($_GET["search"]["value"]));
         $member_ids = \App\Models\Member::where(function ($query) use ($v) {
             $query->whereRaw("CONCAT(first_name, ' ', last_name) like '%" . $v . "%'")
                 ->orWhereRaw("CONCAT(last_name, ' ', first_name) like '%" . $v . "%'");
         })->pluck('id');
-        /*$member_ids = \App\Models\Member::where(function ($query) use ($v) {
-                $query->where('first_name', 'like', '%' . $v . '%')
-                        ->orWhere('last_name', 'like', '%' . $v . '%');
-            })->pluck('id');*/
         $x = $x->whereIn('member_id', $member_ids);
     }
-    if ($_GET["filterStatus"] != '')
+
+    if (isset($_GET["filterStatus"]) && $_GET["filterStatus"] != '')
         $x = $x->where('receipts.status', $_GET["filterStatus"]);
-    if ($_GET["filterFrom"] != "")
+
+    if (isset($_GET["filterFrom"]) && $_GET["filterFrom"] != "")
         $x = $x->where('date', '>=', $_GET["filterFrom"]);
-    if ($_GET["filterTo"] != "")
+
+    if (isset($_GET["filterTo"]) && $_GET["filterTo"] != "")
         $x = $x->where('date', '<=', $_GET["filterTo"]);
 
+    if (isset($_GET["filterMember"]) && $_GET["filterMember"] != "")
+        $x = $x->where('receipts.member_id', $_GET["filterMember"]);
+
     $count = $x->count();
 
     if (isset($_GET["order"])) {