Browse Source

Ultimi fix corsi

Luca Parisio 1 year ago
parent
commit
66957bd239

+ 5 - 0
app/Http/Livewire/Course.php

@@ -17,6 +17,7 @@ class Course extends Component
         $causal_id,
         $max_members,
         $instructor,
+        $year,
         $price,
         $months,
         $date_from, $date_to;
@@ -56,6 +57,7 @@ class Course extends Component
         $this->causal_id = null;
         $this->max_members = 0;
         $this->instructor = '';
+        $this->year = date("Y");
         $this->price = 0;
         $this->date_from = null;
         $this->date_to = null;
@@ -125,6 +127,7 @@ class Course extends Component
                 'causal_id' => $this->causal_id,
                 'max_members' => $this->max_members,
                 'instructor' => $this->instructor,
+                'year' => $this->year,
                 'price' => currencyToDouble($this->price),
                 'months' => json_encode($this->months),
                 'enabled' => $this->enabled
@@ -155,6 +158,7 @@ class Course extends Component
                 $this->causal_id = $course->causal_id;
                 $this->max_members = $course->max_members;
                 $this->instructor = $course->instructor;
+                $this->year = $course->year;
                 $this->price = formatPrice($course->price);
                 $this->months = json_decode($course->months);
                 $this->dataId = $course->id;
@@ -182,6 +186,7 @@ class Course extends Component
                 'causal_id' => $this->causal_id,
                 'max_members' => $this->max_members,
                 'instructor' => $this->instructor,
+                'year' => $this->year,
                 'price' => currencyToDouble($this->price),
                 'months' => json_encode($this->months),
                 'enabled' => $this->enabled

+ 5 - 2
app/Http/Livewire/CourseList.php

@@ -10,7 +10,7 @@ class CourseList extends Component
     public $records = array();
     public $courses = array();
 
-    public $counrsId = 0;
+    public $courseId = 0;
 
     public $months = array('Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic');
 
@@ -28,7 +28,10 @@ class CourseList extends Component
     {
 
         // Carico tutti i corsi associati
-        $member_course = \App\Models\MemberCourse::where('course_id', $this->courseId)->with('member')->get();
+        if ($this->courseId > 0)
+            $member_course = \App\Models\MemberCourse::where('course_id', $this->courseId)->with('member')->get();
+        else
+            $member_course = \App\Models\MemberCourse::with('member')->get();
 
         $this->records = array();
 

+ 70 - 1
app/Http/Livewire/CourseMember.php

@@ -9,9 +9,26 @@ class CourseMember extends Component
 
     public $records = array();
 
+    public $courses = [];
+    public $course_durations = [];
+    public $course_types = [];
+    public $course_levels = [];
+
+    public $filterCourse = "";
+    public $filterLevel = "";
+    public $filterType = "";
+    public $filterDuration = "";
+    public $filterDays = "";
+    public $filterHours = "";
+    public $filterSubscription = "";
+
     public function mount()
     {
 
+        $this->course_types = \App\Models\CourseType::select('*')->where('enabled', true)->get();
+        $this->course_durations = \App\Models\CourseDuration::select('*')->where('enabled', true)->get();
+        $this->course_levels = \App\Models\CourseLevel::select('*')->where('enabled', true)->get();
+        $this->courses = \App\Models\Course::select('*')->orderBy('name', 'ASC')->get();
 
     }
 
@@ -19,10 +36,62 @@ class CourseMember extends Component
     {
 
         // Carico tutti i corsi associati
-        $this->records = \App\Models\MemberCourse::with('member')->get();
+        $datas = \App\Models\MemberCourse::with('member');
+        if ($this->filterCourse != "")
+            $datas = $datas->where('course_id', $this->filterCourse);
+        if ($this->filterLevel != "")
+        {
+            $course_ids = \App\Models\Course::where('course_level_id', $this->filterLevel)->pluck('id');
+            $datas = $datas->whereIn('course_id', $course_ids);
+        }
+        if ($this->filterType != "")
+        {
+            $course_ids = \App\Models\Course::where('course_type_id', $this->filterType)->pluck('id');
+            $datas = $datas->whereIn('course_id', $course_ids);
+        }
+        if ($this->filterDuration != "")
+        {
+            $course_ids = \App\Models\Course::where('course_duration_id', $this->filterDuration)->pluck('id');
+            $datas = $datas->whereIn('course_id', $course_ids);
+        }
+        if ($this->filterDays != "")
+        {
+            $course_ids = \App\Models\Membercourse::where('when', 'like', "%" . $this->filterDays . "%")->pluck('course_id');
+            $datas = $datas->whereIn('course_id', $course_ids);
+        }
+        if ($this->filterHours != "")
+        {
+            $course_ids = \App\Models\Membercourse::where('when', 'like', "%" . $this->filterHours . "%")->pluck('course_id');
+            $datas = $datas->whereIn('course_id', $course_ids);
+        }
+        if ($this->filterSubscription != "")
+        {
+            $course_ids = \App\Models\MemberCourse::where('subscribed', $this->filterSubscription == 1 ? true : false)->pluck('id');
+            $datas = $datas->whereIn('course_id', $course_ids);
+        }
+        $this->records = $datas->get();
+
+        $this->emit('load-data-table');
 
         return view('livewire.course_member');
 
     }
 
+    public function search()
+    {
+
+    }
+
+    public function disableSearch()
+    {
+        $this->filterCourse = "";
+        $this->filterLevel = "";
+        $this->filterType = "";
+        $this->filterDuration = "";
+        $this->filterDays = "";
+        $this->filterHours = "";
+        $this->filterSubscription = "";
+
+    }
+
 }

+ 2 - 1
app/Models/Course.php

@@ -23,7 +23,8 @@ class Course extends Model
         'course_duration_id',
         'course_frequency_id',
         'course_level_id',
-        'enabled'
+        'enabled',
+        'year'
     ];
 
     public function parent()

+ 32 - 0
database/migrations/2024_07_26_164400_add_year_to_courses_table.php

@@ -0,0 +1,32 @@
+<?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('courses', function (Blueprint $table) {
+            $table->integer('year')->nullable();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('courses', function (Blueprint $table) {
+            $table->dropColumn('year');
+        });
+    }
+};

+ 9 - 1
resources/views/livewire/course.blade.php

@@ -168,7 +168,15 @@
                                     @enderror
                                 </div>
                             </div>
-
+                            <div class="col-6">
+                                <div class="form--item">
+                                    <label for="inputName" class="form-label">Anno</label>
+                                    <input class="form-control js-keyupTitle @error('year') is-invalid @enderror" type="number" id="year" placeholder="Anno" wire:model="year">
+                                    @error('year')
+                                        <div class="invalid-feedback">{{ $message }}</div>
+                                    @enderror
+                                </div>
+                            </div>
 
                             <!--<div class="col-6">
                                 <div class="form--item">

+ 1 - 0
resources/views/livewire/course_list.blade.php

@@ -11,6 +11,7 @@
     <section id="subheader" class="d-flex align-items-center ">
         <form action="" class="group--action d-flex align-items-center">
             <select class="form-select form-select-lg me-1" wire:model='courseId'>
+                <option value="0">Tutti
                 @foreach($courses as $c)
                     <option value="{{$c->id}}">{{$c->name}}
                 @endforeach

+ 128 - 0
resources/views/livewire/course_member.blade.php

@@ -1,5 +1,121 @@
+<div class="col">
+    <div class="row h-100">
+<div class="col-auto filterWrapper" id="filter--section"  wire:ignore.self>
+    <aside>
+        <header>
+            <h2>Filtra</h2>
+        </header>
+
+        <form action="" id="filter--form" class="dark-form row">
+            <div class="filter--item">
+                <span class="filter--item_title">Corso</span>
+
+                <div class="filter--item_formElement">
+                    <select class="form-select" wire:model="filterCourse" onchange="destroyDataTable()">
+                        <option value="">--Seleziona--
+                        @foreach($courses as $c)
+                            <option value="{{$c->id}}">{{$c->name}}
+                        @endforeach
+                    </select>
+                </div>
+            </div>
+            <div class="filter--item">
+                <span class="filter--item_title">Livello</span>
+
+                <div class="filter--item_formElement">
+                    <select class="form-select" wire:model="filterLevel" onchange="destroyDataTable()">
+                        <option value="">--Seleziona--
+                        @foreach($course_levels as $c)
+                            <option value="{{$c->id}}">{{$c->name}}
+                        @endforeach
+                    </select>
+                </div>
+            </div>
+
+            <div class="filter--item">
+                <span class="filter--item_title">Tipologia</span>
+
+                <div class="filter--item_formElement">
+                    <select class="form-select" wire:model="filterType" onchange="destroyDataTable()">
+                        <option value="">--Seleziona--
+                        @foreach($course_types as $c)
+                            <option value="{{$c->id}}">{{$c->name}}
+                        @endforeach
+                    </select>
+                </div>
+            </div>
+
+            <div class="filter--item">
+                <span class="filter--item_title">Durata</span>
+
+                <div class="filter--item_formElement">
+                    <select class="form-select" wire:model="filterDuration" onchange="destroyDataTable()">
+                        <option value="">--Seleziona--
+                        @foreach($course_durations as $c)
+                            <option value="{{$c->id}}">{{$c->name}}
+                        @endforeach
+                    </select>
+                </div>
+            </div>
+
+            <div class="filter--item">
+                <span class="filter--item_title">Giorni</span>
+
+                <div class="filter--item_formElement">
+                    <select class="form-select" wire:model="filterDays" onchange="destroyDataTable()">
+                        <option value="">--Seleziona--
+                        <option value="lun">Lunedì
+                        <option value="mar">Martedì
+                        <option value="mer">Mercoledì
+                        <option value="gio">Giovedì
+                        <option value="ven">Venerdì
+                        <option value="sab">Sabato
+                        <option value="dom">Domenica
+                    </select>
+                </div>
+            </div>
+
+            <div class="filter--item">
+                <span class="filter--item_title">Orari</span>
+
+                <div class="filter--item_formElement">
+                    <select class="form-select" wire:model="filterHours" onchange="destroyDataTable()">
+                        <option value="">--Seleziona--
+                        @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>
+            </div>
+
+            <div class="filter--item">
+                <span class="filter--item_title">Pagamento iscrizione</span>
+
+                <div class="filter--item_formElement">
+                    <select class="form-select" wire:model="filterSubscription" onchange="destroyDataTable()">
+                        <option value="">--Seleziona--
+                        <option value="1">Pagata
+                        <option value="0">Non Pagata
+                    </select>
+                </div>
+            </div>
+
+        </form>
+
+        <footer>
+            <div class="filter--buttons d-flex align-items-center justify-content-between">
+                <button class="btn--ui small dark disable" wire:click.prevent="disableSearch()" onclick="destroyDataTable()">cancella</button>
+                <button class="btn--ui small white" wire:click.prevent="search()" onclick="destroyDataTable()">filtra</button>
+            </div>
+        </footer>
+
+    </aside>
+</div>
+
 <div class="col card--ui" id="card--dashboard">
 
+
     <header id="title--section" 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>
@@ -8,6 +124,9 @@
 
     </header>
 
+    <button id="open-filter" onclick="pcsh1()"></button>
+    <button id="close-filter" onclick="pcsh2()"></button>
+
     <section id="resume-table">
         <div class="compare--chart_wrapper d-none"></div>
 
@@ -63,6 +182,15 @@
             loadDataTable();
         });
 
+        Livewire.on('destroy-data-table', () => {
+            $('#tablesaw-350').DataTable().destroy();
+        });
+
+        function destroyDataTable()
+        {
+            $('#tablesaw-350').DataTable().destroy();
+        }
+
         function loadDataTable(){
             $('#tablesaw-350').DataTable({
                 thead: {