Просмотр исходного кода

filtri certificati e allegati genitori

FabioFratini 10 месяцев назад
Родитель
Сommit
8f6db6fbb6

+ 57 - 4
app/Http/Livewire/Member.php

@@ -61,7 +61,7 @@ class Member extends Component
 
     public $isSaving = false;
 
-    public $importoBorsellino, $father_name, $mother_name, $father_email, $mother_email, $father_phone, $mother_phone, $father_fiscal_code, $mother_fiscal_code, $father_doc_number, $father_doc_type, $mother_doc_number, $mother_doc_type;
+    public $importoBorsellino, $father_name, $mother_name, $father_email, $mother_email, $father_phone, $mother_phone, $father_fiscal_code, $mother_fiscal_code, $father_doc_number, $father_doc_type, $mother_doc_number, $mother_doc_type, $mother_document_files, $father_document_files;
 
     public $document_type, $document_number, $document_from, $document_expire_date, $document_files, $document_files_old;
 
@@ -174,6 +174,9 @@ class Member extends Component
         $this->mother_doc_number = '';
         $this->father_doc_type = '';
         $this->mother_doc_type = '';
+        $this->mother_document_files = array();
+        $this->father_document_files = array();
+
         $this->gender = null;
         $this->no_send_mail = false;
         $this->exclude_from_records = false;
@@ -360,22 +363,60 @@ class Member extends Component
 
     public $documents = [];
 
-    public function removeDocument($idx)
+    public $father_documents = [];
+
+    public $mother_documents = [];
+
+
+    public function removeDocument($idx,$type)
     {
-        unset($this->document_files[$idx]);
+        if ($type == 'father')
+        {
+            unset($this->father_document_files[$idx]);
+        }
+        elseif ($type == 'mother')
+        {
+            unset($this->mother_document_files[$idx]);
+        }
+        else
+        {
+            unset($this->document_files[$idx]);
+        }
     }
 
     public function updatedDocuments()
     {
         foreach ($this->documents as $document)
         {
-            $name = $document->getClientOriginalName(); //  . '.'.$allegato->extension();
+            $name = $document->getClientOriginalName();
             $document->storeAs('public', $name);
             $this->document_files[] = $name;
         }
         $this->documents = [];
     }
 
+    public function updatedFatherDocuments()
+    {
+        foreach ($this->father_documents as $document)
+        {
+            $name = $document->getClientOriginalName();
+            $document->storeAs('public', $name);
+            $this->father_document_files[] = $name;
+        }
+        $this->father_documents = [];
+    }
+
+    public function updatedMotherDocuments()
+    {
+        foreach ($this->mother_documents as $document)
+        {
+            $name = $document->getClientOriginalName();
+            $document->storeAs('public', $name);
+            $this->mother_document_files[] = $name;
+        }
+        $this->mother_documents = [];
+    }
+
     public function resetCategoryFields(){
         $this->category_category_id = null;
     }
@@ -858,6 +899,10 @@ class Member extends Component
 
             $docs = implode("|", $this->document_files);
 
+            $father_docs = implode("|", $this->father_document_files);
+
+            $mother_docs = implode("|", $this->mother_document_files);
+
             $member = \App\Models\Member::create([
                 'first_name' => strtoupper($this->first_name),
                 'last_name' => strtoupper($this->last_name),
@@ -884,6 +929,8 @@ class Member extends Component
                 'document_from' => $this->document_from,
                 'document_expire_date' => $this->document_expire_date,
                 'document_files' => $docs,
+                'mother_document_files' => $mother_docs,
+                'father_document_files' => $father_docs,
                 'gender' => $this->gender,
                 'no_send_mail' => $this->no_send_mail,
                 'exclude_from_records' => $this->exclude_from_records,
@@ -960,6 +1007,8 @@ class Member extends Component
                 $this->mother_doc_number = $member->mother_doc_number;
                 $this->father_doc_type = $member->father_doc_type;
                 $this->mother_doc_type = $member->mother_doc_type;
+                $this->father_document_files = explode("|", $member->father_document_files);
+                $this->mother_document_files = explode("|", $member->mother_document_files);
                 $this->document_type = $member->document_type;
                 $this->document_number = $member->document_number;
                 $this->document_from = $member->document_from;
@@ -1088,6 +1137,8 @@ class Member extends Component
             }
 
             $docs = implode("|", $this->document_files);
+            $father_docs = implode("|", $this->father_document_files);
+            $mother_docs = implode("|", $this->mother_document_files);
 
             \App\Models\Member::whereId($this->dataId)->update([
                 'first_name' => strtoupper($this->first_name),
@@ -1110,6 +1161,8 @@ class Member extends Component
                 'father_doc_type' => $this->father_doc_type,
                 'mother_doc_number' => $this->mother_doc_number,
                 'mother_doc_type' => $this->mother_doc_type,
+                'father_document_files' => $father_docs,
+                'mother_document_files' => $mother_docs,
                 'document_type' => $this->document_type,
                 'document_number' => $this->document_number,
                 'document_from' => $this->document_from,

+ 3 - 2
app/Models/Member.php

@@ -38,7 +38,8 @@ class Member extends Model
         'father_email',
         'father_phone',
         'father_fiscal_code',
-        'mother_name',
+        'father_document_files',
+        'mother_document_files',
         'mother_email',
         'mother_phone',
         'mother_fiscal_code',
@@ -241,7 +242,7 @@ class Member extends Model
         {
             $ret += floatval($record->amount);
         }
-        
+
         return $ret;
     }
 

+ 36 - 0
database/migrations/2025_03_17_add_parents_document_files.php

@@ -0,0 +1,36 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+return new class extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('members', function (Blueprint $table) {
+            $table->string('father_document_files')->nullable()->after('father_fiscal_code');
+
+            $table->string('mother_document_files')->nullable()->after('mother_fiscal_code');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('members', function (Blueprint $table) {
+            $table->dropColumn('father_document_files');
+
+            $table->dropColumn(columns: 'mother_document_files');
+        });
+    }
+};

+ 184 - 161
resources/views/livewire/course_member.blade.php

@@ -1,7 +1,8 @@
 <div class="col card--ui" id="card--dashboard">
 
 
-    <header id="title--section" style="display:none !important"  class="d-flex align-items-center justify-content-between">
+    <header id="title--section" style="display:none !important"
+        class="d-flex align-items-center justify-content-between">
         <div class="title--section_name d-flex align-items-center justify-content-between">
             <i class="ico--ui title_section utenti me-2"></i>
             <h2 class="primary">Iscritti ai corsi</h2>
@@ -46,7 +47,7 @@
                         <b>Frequenza</b>
                     </div>
                     <div class="col-12">
-                        <select class="form-select filterFrequency"  multiple="multiple">
+                        <select class="form-select filterFrequency" multiple="multiple">
                             @foreach($course_frequencies as $c)
                                 <option value="{{$c->id}}">{{$c->name}}
                             @endforeach
@@ -60,7 +61,7 @@
                         <b>Tipologia</b>
                     </div>
                     <div class="col-12">
-                        <select class="form-select filterType"   multiple="multiple">
+                        <select class="form-select filterType" multiple="multiple">
                             @foreach($course_types as $c)
                                 <option value="{{$c->id}}">{{$c->name}}
                             @endforeach
@@ -90,7 +91,7 @@
                         <b>Giorni</b>
                     </div>
                     <div class="col-12">
-                        <select class="form-select filterDays"  multiple="multiple">
+                        <select class="form-select filterDays" multiple="multiple">
                             <option value="lun">Lunedì
                             <option value="mar">Martedì
                             <option value="mer">Mercoledì
@@ -108,10 +109,12 @@
                         <b>Orari</b>
                     </div>
                     <div class="col-12">
-                        <select class="form-select filterHours"  multiple="multiple">
-                            @for($c=6;$c<=23;$c++)
-                                <option value="{{str_pad($c, 2, "0", STR_PAD_LEFT)}}:00">{{str_pad($c, 2, "0", STR_PAD_LEFT)}}:00
-                                <option value="{{str_pad($c, 2, "0", STR_PAD_LEFT)}}:30">{{str_pad($c, 2, "0", STR_PAD_LEFT)}}:30
+                        <select class="form-select filterHours" multiple="multiple">
+                            @for($c = 6; $c <= 23; $c++)
+                                <option value="{{str_pad($c, 2, "0", STR_PAD_LEFT)}}:00">
+                                    {{str_pad($c, 2, "0", STR_PAD_LEFT)}}:00
+                                <option value="{{str_pad($c, 2, "0", STR_PAD_LEFT)}}:30">
+                                    {{str_pad($c, 2, "0", STR_PAD_LEFT)}}:30
                             @endfor
                         </select>
                     </div>
@@ -123,11 +126,11 @@
                         <b>Anno</b>
                     </div>
                     <div class="col-12">
-                        <select class="form-select filterYear" >
+                        <select class="form-select filterYear">
                             <option value="">--Seleziona--
-                            @foreach($course_years as $c)
-                                <option value="{{$c}}">{{$c}}
-                            @endforeach
+                                @foreach($course_years as $c)
+                                    <option value="{{$c}}">{{$c}}
+                                @endforeach
                         </select>
                     </div>
                 </div>
@@ -138,7 +141,7 @@
                         <b>Pagamento iscrizione</b>
                     </div>
                     <div class="col-12">
-                        <select class="form-select filterSubscription" >
+                        <select class="form-select filterSubscription">
                             <option value="">--Seleziona--
                             <option value="1">Pagata
                             <option value="0">Non Pagata
@@ -154,7 +157,7 @@
                         <b>Tipologia di tesseramento</b>
                     </div>
                     <div class="col-12">
-                        <select class="form-select filterCards"  multiple="multiple">
+                        <select class="form-select filterCards" multiple="multiple">
                             @foreach(getCards() as $card)
                                 <option value="{{$card->id}}">{{$card->name}}
                             @endforeach
@@ -185,6 +188,8 @@
                         <select class="form-select filterCertificateScadenza" multiple="multiple">
                             <option value="1">Scaduti
                             <option value="2">In scadenza
+                            <option value="3">Non presenti
+                            <option value="4">Validi
                         </select>
                     </div>
                 </div>
@@ -212,14 +217,15 @@
                     </div>
                     <div class="col-12">
                         <div class="row">
-                            <div class="col-3"><label class="form-check-label ms-2" >Da</label></div>
-                            <div class="col-9"><input class="form-control txt fromYear" type="number" name="fromYear" ></div>
+                            <div class="col-3"><label class="form-check-label ms-2">Da</label></div>
+                            <div class="col-9"><input class="form-control txt fromYear" type="number" name="fromYear">
+                            </div>
                         </div>
                     </div>
                     <div class="col-12">
                         <div class="row">
-                            <div class="col-3"><label class="form-check-label ms-2" >A</label></div>
-                            <div class="col-9"><input class="form-control txt toYear" type="number"  name="toYear" ></div>
+                            <div class="col-3"><label class="form-check-label ms-2">A</label></div>
+                            <div class="col-9"><input class="form-control txt toYear" type="number" name="toYear"></div>
                         </div>
                     </div>
                 </div>
@@ -231,14 +237,16 @@
                     </div>
                     <div class="col-12">
                         <div class="row">
-                            <div class="col-3"><label class="form-check-label ms-2" >Da</label></div>
-                            <div class="col-9"><input class="form-control txt fromFromYear" name="fromYearYear" type="number" name="fromFromYear" ></div>
+                            <div class="col-3"><label class="form-check-label ms-2">Da</label></div>
+                            <div class="col-9"><input class="form-control txt fromFromYear" name="fromYearYear"
+                                    type="number" name="fromFromYear"></div>
                         </div>
                     </div>
                     <div class="col-12">
                         <div class="row">
-                            <div class="col-3"><label class="form-check-label ms-2" >A</label></div>
-                            <div class="col-9"><input class="form-control txt toToYear" type="number"  name="toToYear" ></div>
+                            <div class="col-3"><label class="form-check-label ms-2">A</label></div>
+                            <div class="col-9"><input class="form-control txt toToYear" type="number" name="toToYear">
+                            </div>
                         </div>
                     </div>
                 </div>
@@ -246,7 +254,7 @@
         </div>
         <div class="row g-3 mt-2">
             <div class="col-md-12" style="text-align:right">
-                <button class="btn--ui_outline light"  onclick="reset()">RESET</button>
+                <button class="btn--ui_outline light" onclick="reset()">RESET</button>
                 <button class="btn--ui" onclick="loadDataTable()">FILTRA</button>
             </div>
         </div>
@@ -268,7 +276,7 @@
                     <th scope="col">Età</th>
                     <th scope="col">Anno di nascita</th>
                     <th scope="col">Telefono</th>
-                    <th scope="col">Email</th>
+                    <th scope="col">Certificato</th>
                 </tr>
             </thead>
             <tbody id="checkall-target">
@@ -282,54 +290,60 @@
 @push('scripts')
     <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
     <style>
-        .select2-container--default .select2-selection--single{
+        .select2-container--default .select2-selection--single {
             background-color: #E9F0F5;
             border: 0.0625rem solid #DFE5EB;
             font-size: 0.75rem;
         }
-        .select2-selection
-        {
+
+        .select2-selection {
             height: 38px !important;
         }
-        .select2-selection__rendered
-        {
-            padding-top:3px;
+
+        .select2-selection__rendered {
+            padding-top: 3px;
         }
+
         .select2 {
-            width:100% !important;
+            width: 100% !important;
         }
     </style>
-    <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
+    <script src="https://code.jquery.com/jquery-2.2.4.min.js"
+        integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
     <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
 @endpush
 
 @push('scripts')
     <link href="/css/datatables.css" rel="stylesheet" />
-    <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
+    <script src="https://code.jquery.com/jquery-2.2.4.min.js"
+        integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
 
 
     <link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
     <style>
-        .select2-container--default .select2-selection--single{
+        .select2-container--default .select2-selection--single {
             background-color: #E9F0F5;
             border: 0.0625rem solid #DFE5EB;
             font-size: 0.75rem;
         }
-        .select2-selection
-        {
+
+        .select2-selection {
             height: 38px !important;
         }
-        .select2-selection__rendered
-        {
-            padding-top:3px;
+
+        .select2-selection__rendered {
+            padding-top: 3px;
         }
+
         .select2 {
-            width:100% !important;
+            width: 100% !important;
         }
-        .select2-selection--multiple{
+
+        .select2-selection--multiple {
             overflow: hidden !important;
             height: auto !important;
         }
+
         .select2-container {
             box-sizing: border-box;
             display: inline-block;
@@ -337,6 +351,7 @@
             position: relative;
             vertical-align: middle;
         }
+
         .select2-container .select2-selection--single {
             box-sizing: border-box;
             cursor: pointer;
@@ -345,6 +360,7 @@
             user-select: none;
             -webkit-user-select: none;
         }
+
         .select2-container .select2-selection--single .select2-selection__rendered {
             display: block;
             padding-left: 8px;
@@ -353,11 +369,13 @@
             text-overflow: ellipsis;
             white-space: nowrap;
         }
-        .select2-selection__choice__display{
-            color:#000000 !important;
+
+        .select2-selection__choice__display {
+            color: #000000 !important;
         }
     </style>
-    <script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
+    <script src="https://code.jquery.com/jquery-2.2.4.min.js"
+        integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
     <script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
     <script src="/assets/js/datatables.js"></script>
     <script src="https://cdn.datatables.net/buttons/3.0.2/js/buttons.dataTables.js"></script>
@@ -369,34 +387,34 @@
 @push('scripts')
     <script>
 
-        $(document).ready(function() {
+        $(document).ready(function () {
             loadDataTable();
-        } );
+        });
 
-        $('.filterCourse').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterCourse').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
-        $('.filterLevel').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterLevel').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
-        $('.filterFrequency').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterFrequency').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
-        $('.filterType').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterType').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
-        $('.filterDuration').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterDuration').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
-        $('.filterDays').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterDays').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
-        $('.filterHours').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterHours').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
-        $('.filterStatus').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterStatus').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
-        $('.filterSubscription').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterSubscription').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
-        $('.filterCertificateScadenza').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
-        $('.filterCertificateType').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";}}});
-        $('.filterCards').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
+        $('.filterYear').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+        $('.filterCards').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
 
 
 
@@ -405,19 +423,19 @@
         });*/
 
         Livewire.on('load-data-table', () => {
-            $('.filterCourse').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
-            $('.filterLevel').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
-            $('.filterFrequency').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
-            $('.filterType').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
-            $('.filterDuration').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
-            $('.filterDays').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
-            $('.filterHours').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
-            $('.filterStatus').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
-            $('.filterSubscription').select2({"language": {"noResults": function(){return "Nessun risultato";}}});
-            $('.filterYear').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";}}});
+            $('.filterCourse').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterLevel').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterFrequency').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterType').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterDuration').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterDays').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterHours').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterStatus').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterSubscription').select2({ "language": { "noResults": function () { return "Nessun risultato"; } } });
+            $('.filterYear').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"; } } });
             loadDataTable();
         });
 
@@ -427,154 +445,132 @@
 
         @if(isset($_GET["showFilters"]))
             var filterYear = localStorage.getItem("filterYearCourseMember");
-            if (filterYear)
-            {
+            if (filterYear) {
                 $('.filterYear').val(filterYear).trigger('change');
             }
             var filterCourse = localStorage.getItem("filterCourseCourseMember");
-            if (filterCourse)
-            {
+            if (filterCourse) {
                 $('.filterCourse').val(filterCourse).trigger('change');
             }
             var filterLevel = localStorage.getItem("filterLevelCourseMember");
-            if (filterLevel)
-            {
+            if (filterLevel) {
                 $('.filterLevel').val(filterLevel).trigger('change');
             }
             var filterFrequency = localStorage.getItem("filterFrequencyCourseMember");
-            if (filterFrequency)
-            {
+            if (filterFrequency) {
                 $('.filterFrequency').val(filterFrequency).trigger('change');
             }
             var filterDuration = localStorage.getItem("filterDurationCourseMember");
-            if (filterDuration)
-            {
+            if (filterDuration) {
                 $('.filterDuration').val(filterDuration).trigger('change');
             }
             var filterType = localStorage.getItem("filterTypeCourseMember");
-            if (filterType)
-            {
+            if (filterType) {
                 $('.filterType').val(filterType).trigger('change');
             }
 
             var filterDays = localStorage.getItem("filterDaysCourseMember");
-            if (filterDays)
-            {
+            if (filterDays) {
                 $('.filterDays').val(filterDays).trigger('change');
             }
 
             var filterHours = localStorage.getItem("filterHoursCourseMember");
-            if (filterHours)
-            {
+            if (filterHours) {
                 $('.filterHours').val(filterHours).trigger('change');
             }
 
             var filterStatus = localStorage.getItem("filterStatusCourseMember");
-            if (filterStatus)
-            {
+            if (filterStatus) {
                 $('.filterStatus').val(filterStatus).trigger('change');
             }
 
             var filterSubscription = localStorage.getItem("filterSubscriptionCourseMember");
-            if (filterSubscription)
-            {
+            if (filterSubscription) {
                 $('.filterSubscription').val(filterSubscription).trigger('change');
             }
 
             var filterCards = localStorage.getItem("filterCardsCourseMember");
-            if (filterCards)
-            {
+            if (filterCards) {
                 $('.filterCards').val(filterCards).trigger('change');
             }
 
             var filterCertificateScadenza = localStorage.getItem("filterCertificateScadenzaCourseMember");
-            if (filterCertificateScadenza)
-            {
+            if (filterCertificateScadenza) {
                 $('.filterCertificateScadenza').val(filterCertificateScadenza).trigger('change');
             }
 
             var filterCertificateType = localStorage.getItem("filterCertificateTypeCourseMember");
-            if (filterCertificateType)
-            {
+            if (filterCertificateType) {
                 $('.filterCertificateType').val(filterCertificateType).trigger('change');
             }
 
             var fromYear = localStorage.getItem("fromYearCourseMember");
-            if (fromYear)
-            {
+            if (fromYear) {
                 $('input[name="fromYear"]').val(fromYear);
             }
             var toYear = localStorage.getItem("toYearCourseMember");
-            if (toYear)
-            {
+            if (toYear) {
                 $('input[name="toYear"]').val(toYear);
             }
             var fromFromYear = localStorage.getItem("fromFromYearCourseMember");
-            if (fromFromYear)
-            {
+            if (fromFromYear) {
                 $('input[name="fromYearYear"]').val(fromFromYear);
             }
 
             var toYearYear = localStorage.getItem("toYearYearCourseMember");
-            if (toYearYear)
-            {
+            if (toYearYear) {
                 $('input[name="toToYear"]').val(toYearYear);
             }
         @endif
 
-        function reset()
-        {
-            $('.filterCourse').val(null).trigger("change");
-            $('.filterLevel').val(null).trigger("change");
-            $('.filterFrequency').val(null).trigger("change");
-            $('.filterType').val(null).trigger("change");
-            $('.filterDuration').val(null).trigger("change");
-            $('.filterDays').val(null).trigger("change");
-            $('.filterHours').val(null).trigger("change");
-            $('.filterStatus').val(null).trigger("change");
-            $('.filterSubscription').val(null).trigger("change");
-            $('.filterYear').val(null).trigger("change");
-            $('.filterCards').val(null).trigger("change");
-            $('.filterCertificateScadenza').val(null).trigger("change");
-            $('.filterCertificateType').val(null).trigger("change");
-            $('.fromYear').val('');
-            $('.toYear').val('');
-            $('.fromFromYear').val('');
-            $('.toToYear').val('');
-            destroyDataTable();
-            loadDataTable();
-        }
+            function reset() {
+                $('.filterCourse').val(null).trigger("change");
+                $('.filterLevel').val(null).trigger("change");
+                $('.filterFrequency').val(null).trigger("change");
+                $('.filterType').val(null).trigger("change");
+                $('.filterDuration').val(null).trigger("change");
+                $('.filterDays').val(null).trigger("change");
+                $('.filterHours').val(null).trigger("change");
+                $('.filterStatus').val(null).trigger("change");
+                $('.filterSubscription').val(null).trigger("change");
+                $('.filterYear').val(null).trigger("change");
+                $('.filterCards').val(null).trigger("change");
+                $('.filterCertificateScadenza').val(null).trigger("change");
+                $('.filterCertificateType').val(null).trigger("change");
+                $('.fromYear').val('');
+                $('.toYear').val('');
+                $('.fromFromYear').val('');
+                $('.toToYear').val('');
+                destroyDataTable();
+                loadDataTable();
+            }
 
-        function destroyDataTable()
-        {
+        function destroyDataTable() {
             $('#tablesaw-350').DataTable().destroy();
         }
 
         var isFilter = false;
-        $(document).ready(function() {
-            $(document).on("click",".showHideFilter",function() {
-                if (isFilter)
-                {
+        $(document).ready(function () {
+            $(document).on("click", ".showHideFilter", function () {
+                if (isFilter) {
                     isFilter = false;
                     $(".showFilter").hide();
                 }
-                else
-                {
+                else {
                     isFilter = true;
                     $(".showFilter").show();
                 }
             });
-        } );
+        });
 
-        function searchAction()
-        {
+        function searchAction() {
             //destroyDataTable();
             //@this.search();
         }
 
-        function loadDataTable(){
+        function loadDataTable() {
 
-            if ( $.fn.DataTable.isDataTable('#tablesaw-350') ) {
+            if ($.fn.DataTable.isDataTable('#tablesaw-350')) {
                 $('#tablesaw-350').DataTable().destroy();
             }
 
@@ -613,6 +609,7 @@
 
             var filterCertificateScadenza = $('.filterCertificateScadenza').val();
             localStorage.setItem("filterCertificateScadenzaCourseMember", filterCertificateScadenza);
+            console.log(filterCertificateScadenza);
 
             var filterCertificateType = $('.filterCertificateType').val();
             localStorage.setItem("filterCertificateTypeCourseMember", filterCertificateType);
@@ -632,7 +629,7 @@
             $('#tablesaw-350').DataTable({
                 serverSide: true,
                 ajax: {
-                    url : '/get_course_members?filterCourse=' + filterCourse + '&filterDuration=' + filterDuration + '&filterLevel=' + filterLevel + '&filterType=' + filterType + '&filterFrequency=' + filterFrequency + '&filterDays=' + filterDays + '&filterHours=' + filterHours + '&filterStatus=' + filterStatus + '&filterSubscription=' + filterSubscription + '&filterYear=' + filterYear + '&filterCards=' + filterCards + '&filterCertificateScadenza=' + filterCertificateScadenza + '&filterCertificateType=' + filterCertificateType + '&fromYear=' + fromYear + '&toYear=' + toYear + '&fromFromYear=' + fromFromYear + '&toToYear=' + toToYear,
+                    url: '/get_course_members?filterCourse=' + filterCourse + '&filterDuration=' + filterDuration + '&filterLevel=' + filterLevel + '&filterType=' + filterType + '&filterFrequency=' + filterFrequency + '&filterDays=' + filterDays + '&filterHours=' + filterHours + '&filterStatus=' + filterStatus + '&filterSubscription=' + filterSubscription + '&filterYear=' + filterYear + '&filterCards=' + filterCards + '&filterCertificateScadenza=' + filterCertificateScadenza + '&filterCertificateType=' + filterCertificateType + '&fromYear=' + fromYear + '&toYear=' + toYear + '&fromFromYear=' + fromFromYear + '&toToYear=' + toToYear,
                     /*dataSrc: function (json){
                         if(json.totals){
                             totals = json.totals;
@@ -641,33 +638,59 @@
                     }*/
                 },
                 thead: {
-                'th': {'background-color': 'blue'}
+                    'th': { 'background-color': 'blue' }
                 },
                 columns: [
-                    {data: 'column_0'},
-                    {data: 'column_8'},
+                    { data: 'column_0' },
+                    { data: 'column_8' },
                     {
                         data: 'column_1',
-                        render: function (data, type, row){
+                        render: function (data, type, row) {
                             var ret = '<a href="/members?member_detail=' + row["column_7"] + '&from=course_member">' + data + '</a>';
                             return ret;
                         }
                     },
                     {
                         data: 'column_2',
-                        render: function (data, type, row){
+                        render: function (data, type, row) {
                             var ret = '<a href="/members?member_detail=' + row["column_7"] + '&from=course_member">' + data + '</a>';
                             return ret;
                         }
                     },
-                    {data: 'column_3'},
-                    {data: 'column_4'},
-                    {data: 'column_5'},
-                    {data: 'column_6'}
-                ],
+                    { data: 'column_3' },
+                    { data: 'column_4' },
+                    { data: 'column_5' },
+                    {
+                        data: 'column_6',
+                        render: function (data, type, row) {
+                            if (!data || data === "") {
+                                return "";
+                            }
+
+                            var certInfo = data.split("|");
+                            var status = certInfo[0];
+                            var expireDate = certInfo[1];
+                            var html = '<span class="tablesaw-cell-content d-flex align-items-center">';
+
+                            if (status === "0") {
+                                html += '<i class="ico--ui check suspended me-2"></i> ';
+                                html += 'Scaduto: ' + expireDate;
+                            } else if (status === "1") {
+                                html += '<i class="ico--ui check due me-2"></i>';
+                                html += 'In scadenza: ' + expireDate;
+                            } else if (status === "2") {
+                                html += '<i class="ico--ui check active me-2"></i>';
+                                html += 'Scadenza: ' + expireDate;
+                                html += '<span style="float:right"></span>';
+                            }
+
+                            html += '</span>';
+                            return html;
+                        }
+                    }],
                 layout: {
-                    topStart : null,
-                    topEnd : null,
+                    topStart: null,
+                    topEnd: null,
                     top1A: {
                         buttons: [
                             {
@@ -675,21 +698,21 @@
                                 text: 'Esporta',
                                 buttons: [
                                     {
-                                    extend: 'excelHtml5',"action":newexportaction,
+                                        extend: 'excelHtml5', "action": newexportaction,
                                         title: 'Iscritti corsi',
                                         exportOptions: {
                                             columns: ":not(':last')"
                                         }
                                     },
                                     {
-                                        extend: 'pdfHtml5',"action":newexportaction,
+                                        extend: 'pdfHtml5', "action": newexportaction,
                                         title: 'Iscritti corsi',
                                         exportOptions: {
                                             columns: ":not(':last')"
                                         }
                                     },
                                     {
-                                        extend: 'print',"action":newexportaction,
+                                        extend: 'print', "action": newexportaction,
                                         text: 'Stampa',
                                         title: 'Iscritti corsi',
                                         exportOptions: {
@@ -701,12 +724,12 @@
                             }
                         ]
                     },
-                    top1B : {
+                    top1B: {
                         pageLength: {
                             menu: [[10, 25, 50, 100, 100000], [10, 25, 50, 100, "Tutti"]]
                         }
                     },
-                    top1C :'search',
+                    top1C: 'search',
                 },
                 order: [[0, 'asc'], [1, 'asc']],
                 pagingType: 'numbers',
@@ -718,9 +741,10 @@
                     $(".dt-search").append(html);
                 }
             });
+
             $('#tablesaw-350 thead tr th').addClass('col');
             $('#tablesaw-350 thead tr th').css("background-color", "#f6f8fa");
-            $('#tablesaw-350').on('draw.dt', function() {
+            $('#tablesaw-350').on('draw.dt', function () {
                 $('[data-bs-toggle="popover"]').popover()
             });
 
@@ -728,4 +752,3 @@
 
     </script>
 @endpush
-

+ 71 - 43
resources/views/livewire/member.blade.php

@@ -353,9 +353,10 @@
                                 </div>
                                 <div class="col-12">
                                     <select name="filterScadenza" class="form-select filterScadenza" multiple="multiple">
-                                        <option value="">Tutti
                                         <option value="1">Scaduti
                                         <option value="2">In scadenza
+                                        <option value="3">Non presenti
+                                        <option value="4">Validi
                                     </select>
                                 </div>
                             </div>
@@ -698,6 +699,54 @@
 
                                                 </div>
 
+                                                <div class="row g-3 mt-1" wire:key='reload-{{$selectId}}'>
+
+                                                    <span class="title-form primary d-block w-100">Documento</span>
+                                                    <div class="col-xl-6 col-xl-3">
+                                                        <label for="document_type" class="form-label">Tipo</label>
+                                                        <select class="form-select form-select-lg me-1" aria-label=".form-select-lg example" wire:model="document_type">
+                                                            <option value="">--Seleziona--</option>
+                                                            <option value="Carta di identità">Carta di identità</option>
+                                                            <option value="Passaporto">Passaporto</option>
+                                                            <option value="Patente">Patente</option>
+                                                            <option value="Permesso di soggiorno">Permesso di soggiorno</option>
+                                                        </select>
+                                                    </div>
+                                                    <div class="col-xl-6 col-xl-3">
+                                                        <label for="document_number" class="form-label">Numero</label>
+                                                        <input class="form-control" type="text" id="document_number" placeholder="Numero" wire:model="document_number">
+                                                    </div>
+                                                    <div class="col-xl-6 col-xl-3">
+                                                        <label for="document_from" class="form-label">Rilasciato da</label>
+                                                        <select class="form-select form-select-lg me-1" aria-label=".form-select-lg example" wire:model="document_from">
+                                                            <option value="">--Seleziona--</option>
+                                                            <option value="Comune">Comune</option>
+                                                            <option value="Motorizzazione">Motorizzazione</option>
+                                                            <option value="Ministero degli interni">Ministero degli interni</option>
+                                                            <option value="Prefettura">Prefettura</option>
+                                                        </select>
+                                                    </div>
+                                                    <div class="col-xl-6 col-xl-3">
+                                                        <label for="document_expire_date" class="form-label">Scadenza</label>
+                                                        <input class="form-control" type="date" id="document_expire_date" placeholder="Scadenza" wire:model="document_expire_date">
+                                                    </div>
+                                                    <div class="col-12">
+                                                        <label for="document_files" class="form-label">File</label>
+                                                        <input class="form-control" type="file" wire:model="documents" multiple><br>
+                                                        <label for="document_files" class="form-label">Caricati</label>
+                                                        @foreach ($document_files as $idx => $d)
+                                                            <div class="row">
+                                                                <div class="col-6">
+                                                                    <a href="{{ asset('storage/app/public/'.$d) }}" target="_blank" class="form-label">{{$d}}</a>
+                                                                </div>
+                                                                <div class="col-6">
+                                                                    <a wire:click="removeDocument({{$idx}},'self')" class="form-label">(elimina)</a><br>
+                                                                </div>
+                                                            </div>
+                                                        @endforeach
+                                                    </div>
+                                                </div>
+
                                                 @if($under18)
 
                                                     <div class="row g-3 mt-1">
@@ -732,6 +781,21 @@
                                                                 <option value="Permesso di soggiorno">Permesso di soggiorno</option>
                                                             </select>
                                                         </div>
+                                                        <div class="col-12">
+                                                            <label for="father_documents" class="form-label">File</label>
+                                                            <input class="form-control" type="file" wire:model="father_documents" multiple><br>
+                                                            <label for="father_documents" class="form-label">Caricati</label>
+                                                            @foreach ($father_document_files as $idx => $d)
+                                                                <div class="row">
+                                                                    <div class="col-6">
+                                                                        <a href="{{ asset('storage/app/public/'.$d) }}" target="_blank" class="form-label">{{$d}}</a>
+                                                                    </div>
+                                                                    <div class="col-6">
+                                                                        <a wire:click="removeDocument({{$idx}},'father')" class="form-label">(elimina)</a><br>
+                                                                    </div>
+                                                                </div>
+                                                            @endforeach
+                                                        </div>
                                                     </div>
                                                     <div class="row g-3 mt-1">
                                                         <span class="title-form primary d-block w-100">Genitore 2</span>
@@ -766,58 +830,22 @@
                                                             </select>
                                                         </div>
                                                     </div>
-
-                                                @endif
-
-
-                                                <div class="row g-3 mt-1" wire:key='reload-{{$selectId}}'>
-
-                                                    <span class="title-form primary d-block w-100">Documento</span>
-                                                    <div class="col-xl-6 col-xl-3">
-                                                        <label for="document_type" class="form-label">Tipo</label>
-                                                        <select class="form-select form-select-lg me-1" aria-label=".form-select-lg example" wire:model="document_type">
-                                                            <option value="">--Seleziona--</option>
-                                                            <option value="Carta di identità">Carta di identità</option>
-                                                            <option value="Passaporto">Passaporto</option>
-                                                            <option value="Patente">Patente</option>
-                                                            <option value="Permesso di soggiorno">Permesso di soggiorno</option>
-                                                        </select>
-                                                    </div>
-                                                    <div class="col-xl-6 col-xl-3">
-                                                        <label for="document_number" class="form-label">Numero</label>
-                                                        <input class="form-control" type="text" id="document_number" placeholder="Numero" wire:model="document_number">
-                                                    </div>
-                                                    <div class="col-xl-6 col-xl-3">
-                                                        <label for="document_from" class="form-label">Rilasciato da</label>
-                                                        <select class="form-select form-select-lg me-1" aria-label=".form-select-lg example" wire:model="document_from">
-                                                            <option value="">--Seleziona--</option>
-                                                            <option value="Comune">Comune</option>
-                                                            <option value="Motorizzazione">Motorizzazione</option>
-                                                            <option value="Ministero degli interni">Ministero degli interni</option>
-                                                            <option value="Prefettura">Prefettura</option>
-                                                        </select>
-                                                    </div>
-                                                    <div class="col-xl-6 col-xl-3">
-                                                        <label for="document_expire_date" class="form-label">Scadenza</label>
-                                                        <input class="form-control" type="date" id="document_expire_date" placeholder="Scadenza" wire:model="document_expire_date">
-                                                    </div>
                                                     <div class="col-12">
-                                                        <label for="document_files" class="form-label">File</label>
-                                                        <input class="form-control" type="file" wire:model="documents" multiple><br>
-                                                        <label for="document_files" class="form-label">Caricati</label>
-                                                        @foreach ($document_files as $idx => $d)
+                                                        <label for="mother_documents" class="form-label">File</label>
+                                                        <input class="form-control" type="file" wire:model="mother_documents" multiple><br>
+                                                        <label for="mother_documents" class="form-label">Caricati</label>
+                                                        @foreach ($mother_document_files as $idx => $d)
                                                             <div class="row">
                                                                 <div class="col-6">
                                                                     <a href="{{ asset('storage/app/public/'.$d) }}" target="_blank" class="form-label">{{$d}}</a>
                                                                 </div>
                                                                 <div class="col-6">
-                                                                    <a wire:click="removeDocument({{$idx}})" class="form-label">(elimina)</a><br>
+                                                                    <a wire:click="removeDocument({{$idx}},'mother')" class="form-label">(elimina)</a><br>
                                                                 </div>
                                                             </div>
                                                         @endforeach
                                                     </div>
-                                                </div>
-
+                                                @endif
 
                                                 <div class="row g-3 mt-1">
                                                     <span class="title-form primary d-block w-100">Certificato Medico</span>

+ 112 - 45
routes/web.php

@@ -184,7 +184,7 @@ Route::group(['middleware' => 'auth'],function(){
         }
         if ($_GET["filterCategories"] != "null")
         {
-         
+
             $categories = [];
             $cats = explode(",", $_GET["filterCategories"]);
 
@@ -203,7 +203,7 @@ Route::group(['middleware' => 'auth'],function(){
                     }
                 }
             }
-            
+
             $cc = array();
             foreach($categories as $c)
             {
@@ -246,17 +246,29 @@ Route::group(['middleware' => 'auth'],function(){
             //$ids = array_merge($ids, $types->toArray());
         }
 
-        if ($_GET["filterScadenza"] != "null")
-        {
-            if ($_GET["filterScadenza"] == "1")
-                $scad = \App\Models\MemberCertificate::where('expire_date', '<', date("Y-m-d"))->pluck('member_id');
-            if ($_GET["filterScadenza"] == "2")
-                $scad = \App\Models\MemberCertificate::whereBetween('expire_date', [date("Y-m-d"), date("Y-m-d", strtotime("+1 month"))])->pluck('member_id');
-            //$ids = array_merge($ids, $scad->toArray());
-            $x = $x->whereIn('id', $scad->toArray());;
-            //$x = $x->whereIn('id', $scadenza);
-        }
+        if ($_GET["filterScadenza"] != "null") {
+            $scadenzaValues = explode(",", $_GET["filterScadenza"]);
+            $allScadIds = [];
+
+            foreach ($scadenzaValues as $filterValue) {
+                if ($filterValue == "1")
+                    $scadIds = \App\Models\MemberCertificate::where('expire_date', '<', date("Y-m-d"))->pluck('member_id')->toArray();
+                else if ($filterValue == "2")
+                    $scadIds = \App\Models\MemberCertificate::where('expire_date', '>=', date("Y-m-d"))
+                    ->where('expire_date', '<=', date("Y-m-d", strtotime("+1 month")))
+                    ->pluck('member_id')->toArray();
+                else if ($filterValue == "3")
+                    $scadIds = \App\Models\Member::whereNotIn('id', \App\Models\MemberCertificate::pluck('member_id'))->pluck('id')->toArray();
+                else if ($filterValue == "4")
+                    $scadIds = \App\Models\MemberCertificate::where('expire_date', '>', date("Y-m-d", strtotime("+1 month")))->pluck('member_id')->toArray();
 
+                $allScadIds = array_merge($allScadIds, $scadIds);
+            }
+
+            $allScadIds = array_unique($allScadIds);
+
+            $x = $x->whereIn('id', $allScadIds);
+        }
         if ($_GET["filterStatus"] != "null")
         {
             $status = explode(",", $_GET["filterStatus"]);
@@ -344,9 +356,18 @@ Route::group(['middleware' => 'auth'],function(){
             // $has_certificate = $r->hasCertificate();
             $y = '';
 
-            if ($r->certificate_date != '')
-            {
-                $y = $r->certificate . "|" . date("d/m/Y", strtotime($r->certificate_date));
+            if ($r->certificate_date != '') {
+                $status = '';
+
+                if ($r->certificate_date < date("Y-m-d")) {
+                    $status = "0";
+                } else if ($r->certificate_date >= date("Y-m-d") && $r->certificate_date <= date("Y-m-d", strtotime("+1 month"))) {
+                    $status = "1";
+                } else if ($r->certificate_date > date("Y-m-d", strtotime("+1 month"))) {
+                    $status = "2";
+                }
+
+                $y = $status . "|" . date("d/m/Y", strtotime($r->certificate_date));
             }
 
             /*
@@ -674,7 +695,7 @@ Route::group(['middleware' => 'auth'],function(){
                     }
                 }
             }
-            
+
             //$causals = \App\Models\RecordRow::where('causal_id', $_GET["filterCausals"])->pluck('record_id');
             $causals = \App\Models\RecordRow::whereIn('causal_id', $causals)->pluck('record_id');
             $x = $x->whereIn('records.id', $causals);
@@ -856,22 +877,22 @@ Route::group(['middleware' => 'auth'],function(){
                         {
                             if (session()->get('sort_value', 0) == 0)
                             {
-                                $sort_value = 1;                                
+                                $sort_value = 1;
                             }
                             if (session()->get('sort_value', 0) == 1)
                             {
-                                $sort_value = 2;                                
+                                $sort_value = 2;
                             }
                             if (session()->get('sort_value', 0) == 2)
                             {
-                                $sort_value = 3;                                
+                                $sort_value = 3;
                             }
                             if (session()->get('sort_value', 0) == 3)
                             {
-                                $sort_value = 0;                                
+                                $sort_value = 0;
                             }
                             session()->put('sort_value', $sort_value);
-                            
+
                         }
                         session()->put('sort_order', $d);
                     }
@@ -885,7 +906,7 @@ Route::group(['middleware' => 'auth'],function(){
                 }
 
             }
-        }  
+        }
 
         //print $sort_value;
 
@@ -1264,20 +1285,44 @@ Route::group(['middleware' => 'auth'],function(){
             //$this->filter .= "Pagata sottoscrizione : " . ($this->filterSubscription == 1 ? "SI" : "NO") . " ";
         }
 
-        if ($_GET["filterCertificateType"] != "null")
-        {
-            $ctypes = \App\Models\MemberCertificate::where('type', $_GET["filterCertificateType"])->where('expire_date', '>', date("Y-m-d"))->pluck('member_id');
-            $datas = $datas->whereIn('member_id', $ctypes);
-        }
-        if ($_GET["filterCertificateScadenza"] != "null")
-        {
-            if ($_GET["filterCertificateScadenza"] == "1")
-                $scad = \App\Models\MemberCertificate::where('expire_date', '<', date("Y-m-d"))->pluck('member_id');
-            if ($_GET["filterCertificateScadenza"] == "2")
-                $scad = \App\Models\MemberCertificate::whereBetween('expire_date', [date("Y-m-d"), date("Y-m-d", strtotime("+1 month"))])->pluck('member_id');
-            $datas = $datas->whereIn('member_id', $scad);
-        }
+        if ($_GET["filterCertificateScadenza"] != "null") {
+            $scadenzaValues = explode(",", $_GET["filterCertificateScadenza"]);
+            $allScadIds = [];
+
+            foreach ($scadenzaValues as $filterValue) {
+                if ($filterValue == "1") {
+                    $scadIds = \App\Models\MemberCertificate::where('expire_date', '<', date("Y-m-d"))
+                        ->pluck('member_id')
+                        ->toArray();
+                    $allScadIds = array_merge($allScadIds, $scadIds);
+                }
+                else if ($filterValue == "2") {
+                    $scadIds = \App\Models\MemberCertificate::where('expire_date', '>=', date("Y-m-d"))
+                        ->where('expire_date', '<=', date("Y-m-d", strtotime("+1 month")))
+                        ->pluck('member_id')
+                        ->toArray();
+                    $allScadIds = array_merge($allScadIds, $scadIds);
+                }
+                else if ($filterValue == "3") {
+                    $scadIds = \App\Models\Member::whereNotIn('id', \App\Models\MemberCertificate::pluck('member_id'))
+                        ->pluck('id')
+                        ->toArray();
+                    $allScadIds = array_merge($allScadIds, $scadIds);
+                }
+                else if ($filterValue == "4") {
+                    $scadIds = \App\Models\MemberCertificate::where('expire_date', '>', date("Y-m-d", strtotime("+1 month")))
+                        ->pluck('member_id')
+                        ->toArray();
+                    $allScadIds = array_merge($allScadIds, $scadIds);
+                }
+            }
+
+            // Remove duplicates
+            $allScadIds = array_unique($allScadIds);
 
+            // Apply filter using the collected IDs
+            $datas = $datas->whereIn('member_id', $allScadIds);
+        }
         if ($_GET["fromYear"] != "")
         {
             $m_ids = \App\Models\Member::where('birth_date', '<', date("Y-m-d", strtotime("-" . $_GET["fromYear"] . " year", time())))->pluck('id');
@@ -1335,7 +1380,7 @@ Route::group(['middleware' => 'auth'],function(){
             if ($_GET["order"][0]["column"] == 7)
                 $column = 'phone';
             if ($_GET["order"][0]["column"] == 8)
-                $column = 'email';
+                $column = 'certificate_expire_date';
             if ($column != '')
                 $datas = $datas->orderBy($column, $_GET["order"][0]["dir"]);
             else
@@ -1367,6 +1412,28 @@ Route::group(['middleware' => 'auth'],function(){
             $date1 = new DateTime($r->birth_date);
             $date2 = new DateTime("now");
             $interval = $date1->diff($date2);
+            $certificate = \App\Models\MemberCertificate::where('member_id', $r->member_id)
+            ->orderBy('expire_date', 'desc')
+            ->first();
+
+            $certificateInfo = "";
+            if ($certificate) {
+                // Format: status|expire_date|type
+                // Status: 0 = expired, 1 = expiring soon, 2 = valid
+                $today = new DateTime();
+                $expireDate = new DateTime($certificate->expire_date);
+                $oneMonthFromNow = (new DateTime())->modify('+1 month');
+
+                $status = "2"; // Default to valid
+                if ($expireDate < $today) {
+                    $status = "0"; // Expired
+                } elseif ($expireDate < $oneMonthFromNow) {
+                    $status = "1"; // Expiring soon
+                }
+
+                $certificateInfo = $status . "|" . date("d/m/Y", strtotime($certificate->expire_date)) . "|" . $certificate->type;
+            }
+
 
             $ret[] = array(
 
@@ -1377,7 +1444,7 @@ Route::group(['middleware' => 'auth'],function(){
                 "column_3" => strval($interval->y),
                 "column_4" => date("Y", strtotime($r->birth_date)),
                 "column_5" => $r->phone,
-                "column_6" => $r->email,
+                "column_6" => $certificateInfo,
                 "column_7" => $r->member_id
             );
         }
@@ -1543,10 +1610,10 @@ Route::get('/test_sms', function()
         $params = array(
             'to'            => '+39' . $phone,
             'from'          => env('SMS_FROM', 'Test'),
-            'message'       => $certificate->member->first_name . ', il tuo certificato medico scadrà il ' . $expire_date_it,   
-            'format'        => 'json',           
+            'message'       => $certificate->member->first_name . ', il tuo certificato medico scadrà il ' . $expire_date_it,
+            'format'        => 'json',
         );
-        
+
         sms_send($params);
         print "Inviato";
     }
@@ -1556,12 +1623,12 @@ Route::get('/test_sms', function()
     $params = array(
         'to'            => '+393893163265',
         'from'          => env('SMS_FROM', 'Test'),
-        'message'       => 'Prova SMS da IAO',   
-        'format'        => 'json',           
+        'message'       => 'Prova SMS da IAO',
+        'format'        => 'json',
     );
-    
+
     echo sms_send($params);
 
     */
-    
-});
+
+});