Jelajahi Sumber

subscription_member - aggiunto filtro periodo

ferrari 3 minggu lalu
induk
melakukan
d0cb13f3e3

+ 27 - 0
app/Http/Livewire/SubscriptionMember.php

@@ -11,6 +11,7 @@ class SubscriptionMember extends Component
 
     public $subscription_id;
     public $subscription = null;
+    public $subscription_years = [];
 
     public $filter = "";
 
@@ -41,6 +42,32 @@ class SubscriptionMember extends Component
         $this->filter = '';
         $members = \App\Models\MemberSubscription::with('member')->where('subscription_id', $this->subscription_id);
 
+        $date_from = $members->orderBy('date_from', 'asc')->pluck('date_from')->first();
+        $date_to = $members->orderBy('date_to', 'desc')->pluck('date_to')->first();
+        if ($date_from && $date_to) {
+            $date_from = \Carbon\Carbon::createFromFormat("Y-m-d", $date_from)->setHour(0)->setMinutes(0)->setSeconds(0);
+            $year_from = $date_from->year;
+            $month_from = env('FISCAL_YEAR_MONTH_FROM', 9);
+            $period_from = \Carbon\Carbon::createFromDate($year_from, $month_from, 1)->startOfMonth();
+
+            $date_to = \Carbon\Carbon::createFromFormat("Y-m-d", $date_to)->setHour(23)->setMinutes(23)->setSeconds(59);
+            $year_to = $date_to->year;
+            $month_to = env('FISCAL_YEAR_MONTH_TO', 8);
+            $period_to = \Carbon\Carbon::createFromDate($year_to, $month_to, 0)->endOfMonth();
+
+            if ($period_from->isAfter($date_from)) {
+                $year_from--;
+            }
+
+            if ($period_to->isBefore($date_to)) {
+                $year_to++;
+            }
+            $this->subscription_years = [];
+            for ($year = $year_from; $year < $year_to; $year++) {
+                $this->subscription_years[] = $year . '/' . ($year + 1);
+            }
+        }
+
         if ($this->filterSubscription != "") {
             $ids = \App\Models\MemberSubscription::where('subscribed', $this->filterSubscription == 1 ? true : false)->pluck('id');
             $members = $members->whereIn('id', $ids);

+ 27 - 1
resources/views/livewire/subscription_member.blade.php

@@ -117,6 +117,21 @@
                     </div>
                 </div>
             </div>
+            <div class="col-md-3">
+                <div class="row">
+                    <div class="col-md-12" style="margin-bottom:10px;">
+                        <b>Periodo</b>
+                    </div>
+                    <div class="col-12">
+                        <select class="form-select filterYear">
+                            <option value="">--Seleziona--
+                                @foreach($subscription_years as $s)
+                                    <option value="{{$s}}">{{$s}}
+                                @endforeach
+                        </select>
+                    </div>
+                </div>
+            </div>
         </div>
         <div class="row g-3 mt-2">
             <div class="col-md-12" style="text-align:right">
@@ -258,12 +273,14 @@
         $('.filterCertificateScadenza').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
         $('.filterCertificateType').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
         $('.filterCards').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+        $('.filterYear').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
         Livewire.on('load-data-table', () => {
             $('.filterStatus').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
             $('.filterCards').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
             $('.filterCertificateScadenza').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
             $('.filterCertificateType').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterYear').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
             loadDataTable();
         });
 
@@ -276,6 +293,11 @@
             $('.filterStatus').val(filterStatus).trigger('change');
         }
 
+        var filterYear = localStorage.getItem("filterYearSubscriptionMember");
+        if (filterYear) {
+            $('.filterYear').val(filterYear).trigger('change');
+        }
+
         var filterCards = localStorage.getItem("filterCardsSubscriptionMember");
         if (filterCards) {
             $('.filterCards').val(filterCards).trigger('change');
@@ -311,6 +333,7 @@
 
         function reset() {
             $('.filterStatus').val(null).trigger("change");
+            $('.filterYear').val(null).trigger("change");
             $('.filterCards').val(null).trigger("change");
             $('.filterCertificateScadenza').val(null).trigger("change");
             $('.filterCertificateType').val(null).trigger("change");
@@ -355,6 +378,9 @@
             var filterStatus = $('.filterStatus').val();
             localStorage.setItem("filterStatusSubscriptionMember", filterStatus);
 
+            var filterYear = $('.filterYear').val();
+            localStorage.setItem("filterYearSubscriptionMember", filterYear);
+
             var filterCards = $('.filterCards').val();
             localStorage.setItem("filterCardsSubscriptionMember", filterCards);
 
@@ -386,7 +412,7 @@
                 processing: true,
                 stateSave: true,
                 ajax: {
-                    url: '/get_subscription_members?subscription_id=' + @this.subscription_id + '&filterStatus=' + filterStatus + '&filterCards=' + filterCards + '&filterCertificateScadenza=' + filterCertificateScadenza + '&filterCertificateType=' + filterCertificateType + '&fromYear=' + fromYear + '&toYear=' + toYear + '&fromFromYear=' + fromFromYear + '&toToYear=' + toToYear,
+                    url: '/get_subscription_members?subscription_id=' + @this.subscription_id + '&filterStatus=' + filterStatus + '&filterCards=' + filterCards + '&filterCertificateScadenza=' + filterCertificateScadenza + '&filterCertificateType=' + filterCertificateType + '&fromYear=' + fromYear + '&toYear=' + toYear + '&fromFromYear=' + fromFromYear + '&toToYear=' + toToYear + '&filterYear=' + filterYear,
                 },
                 thead: {
                     'th': { 'background-color': 'blue' }

+ 13 - 0
routes/web.php

@@ -2271,6 +2271,19 @@ Route::group(['middleware' => 'tenant'], function () {
             $datas = $datas->whereIn('member_id', $card_ids);
         }
 
+        if ($_GET["filterYear"] != "") {
+            $years = explode('/', $_GET["filterYear"]);
+            $year_from = $years[0];
+            $month_from = env('FISCAL_YEAR_MONTH_FROM', 9);
+            $date_from = Carbon\Carbon::createFromDate($year_from, $month_from, 1)->startOfMonth();
+            $year_to = $years[1];
+            $month_to = env('FISCAL_YEAR_MONTH_TO', 8);
+            $date_to = Carbon\Carbon::createFromDate($year_to, $month_to, 1)->endOfMonth();
+
+            $datas = $datas->where('member_subscriptions.date_to', '>=', $date_from)
+                ->where('member_subscriptions.date_from', '<=', $date_to);
+        }
+
         $aRet = [];
         if (isset($_GET["order"])) {
             $column = '';