Luca Parisio 6 месяцев назад
Родитель
Сommit
5a599d50b5

+ 4 - 2
app/Http/Livewire/Calendar.php

@@ -67,6 +67,8 @@ class Calendar extends Component
             $data = array('id' => $c->id, 'title' => $c->course ? $c->course->name : $c->name . ($c->status == 99 ? ' (annullata)' : ''), 'start' => $c->from, 'end' => $c->to);
             if ($c->course && $c->course->color != '')
                 $data['color'] = $c->course->color;
+            if ($c->status == 99)
+                $data['color'] = "#808080";
             $this->records[] = $data;
         }
         if ($reload)
@@ -79,13 +81,13 @@ class Calendar extends Component
 
         $calendar = new \App\Models\Calendar();
         $calendar->course_id = null;
-        $calendar->court_id = $this->court_id;
+        $calendar->court_id = $this->court_id != '' ? $this->court_id : null;
         $calendar->name = $this->name;
         $calendar->course_type_id = $this->course_type_id != '' ? $this->course_type_id : null;
         $calendar->course_duration_id = $this->course_duration_id != '' ? $this->course_duration_id : null;
         $calendar->course_frequency_id = $this->course_frequency_id != '' ? $this->course_frequency_id : null;
         $calendar->course_level_id = $this->course_level_id != '' ? $this->course_level_id : null;
-        $calendar->instructor_id = $this->instructor_id;
+        $calendar->instructor_id = $this->instructor_id != '' ? $this->instructor_id : null;
         $calendar->from = $this->from;
         $calendar->to = $this->to;
         $calendar->note = $this->note;

+ 85 - 10
app/Http/Livewire/Presence.php

@@ -11,6 +11,8 @@ class Presence extends Component
 
     public $records;
 
+    public $member_ids = [];
+
     public $court_id, $instructor_id, $motivation_id, $motivation_manual_id, $note, $manual;
 
     public $newMemberFirstName, $newMemberLastName, $newMemberEmail, $newMemberToComplete, $newMemberFiscalCode, $newMemberFiscalCodeExist, $newMemberMotivationId;
@@ -19,6 +21,8 @@ class Presence extends Component
 
     public $added = false;
 
+    public $filter = '';
+
     public $courts = [];
     public $instructors = [];
     public $motivations = [];
@@ -32,17 +36,25 @@ class Presence extends Component
 
     public function mount()
     {
+
+        setlocale(LC_ALL, 'it_IT');
+
         $this->calendar = \App\Models\Calendar::findOrFail($_GET["calendarId"]);
         $this->court_id = $this->calendar->court_id;
         $this->instructor_id = $this->calendar->instructor_id;
         $this->motivation_manual_id = $this->calendar->motivation_manual_id;
         $this->manual = $this->calendar->manual;
+        $this->members = \App\Models\Member::select(['id', 'first_name', 'last_name', 'fiscal_code'])->orderBy('last_name')->orderBy('first_name')->get();
         $this->note = $this->calendar->note;
         $this->courts = \App\Models\Court::select('*')->where('enabled', true)->get();
         $this->instructors = \App\Models\User::select('*')->where('level', 2)->where('enabled', true)->get();
         $this->motivations = \App\Models\Motivation::select('*')->where('enabled', true)->where('type', 'del')->get();
         $this->motivations_add = \App\Models\Motivation::select('*')->where('enabled', true)->where('type', 'add')->get();
-        $this->members = \App\Models\Member::select(['id', 'first_name', 'last_name', 'fiscal_code'])->orderBy('last_name')->orderBy('first_name')->get();
+        
+    }
+
+    public function updatedNewMemberMotivationId() {
+        $this->emit('reload');
     }
 
     public function render()
@@ -50,6 +62,8 @@ class Presence extends Component
         
         $this->records = [];
 
+        setlocale(LC_ALL, 'it_IT');
+
         $presenceMembers = [];
 
         if (!$this->manual)
@@ -66,15 +80,24 @@ class Presence extends Component
             // Elenco utenti iscritti al corso "padre"
             $members_courses = \App\Models\MemberCourse::where('when', 'like', "%" . $d . "%")->whereIn('course_id', $courses)->pluck('member_id')->toArray();
 
-            $members = \App\Models\Member::whereIn('id', $members_courses)->orderBy('last_name')->orderBy('first_name')->get();
+            if ($this->filter != '')
+            {
+                $filter = $this->filter;
+                $members = \App\Models\Member::whereIn('id', $members_courses)->where(function ($query) use ($filter) {
+                    $query->whereRaw("CONCAT(first_name, ' ', last_name) like '%" . $filter . "%'")
+                        ->orWhereRaw("CONCAT(last_name, ' ', first_name) like '%" . $filter . "%'");
+                })->orderBy('last_name')->orderBy('first_name')->get();
+            }
+            else
+                $members = \App\Models\Member::whereIn('id', $members_courses)->orderBy('last_name')->orderBy('first_name')->get();
 
             // $presences = \App\Models\Presence::where('calendar_id', $this->calendar->id)->pluck('member_id')->toArray();
             // $my_presences = \App\Models\Presence::where('calendar_id', $this->calendar->id)->where('user_id', \Auth::user()->id)->pluck('member_id')->toArray();
 
             foreach($members as $member)
             {
-
                 $presenceMembers[] = $member->id;
+                //$this->member_ids[] = $member->id;
                 $this->records[] = $this->getMember($member);
             }
 
@@ -82,15 +105,28 @@ class Presence extends Component
 
         // Aggiungo i membri iscritti
         $members_presences = \App\Models\Presence::where('calendar_id', $this->calendar->id)->whereNotIn('member_id', $presenceMembers)->pluck('member_id')->toArray();
-        $members = \App\Models\Member::whereIn('id', $members_presences)->get();
+
+        if ($this->filter != '')
+        {
+            $filter = $this->filter;
+            $members = \App\Models\Member::whereIn('id', $members_presences)->where(function ($query) use ($filter) {
+                $query->whereRaw("CONCAT(first_name, ' ', last_name) like '%" . $filter . "%'")
+                    ->orWhereRaw("CONCAT(last_name, ' ', first_name) like '%" . $filter . "%'");
+            })->get();
+        }
+        else
+            $members = \App\Models\Member::whereIn('id', $members_presences)->get();
+
         foreach($members as $member)
         {
+            //$this->member_ids[] = $member->id;
             $this->records[] = $this->getMember($member);
         }
 
         foreach($this->newMembers as $m)
         {
             $member = \App\Models\Member::findOrFail($m);
+            //$this->member_ids[] = $member->id;
             $this->records[] = $this->getMember($member);
         }
 
@@ -102,6 +138,14 @@ class Presence extends Component
         return view('livewire.presence');
     }
 
+    public function getDateX()
+    {
+        setlocale(LC_ALL, 'it_IT');
+        $days = ['Domenica', 'Lunedì', 'Martedì', 'Mercoledì', 'Giovedì', 'Venerdì', 'Sabato'];
+        $months = ['Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre'];
+        return $days[date('w', strtotime($this->calendar->from))] . " " . date("d", strtotime($this->calendar->from)) . " " . $months[date("n", strtotime($this->calendar->from)) - 1];
+    }
+
     public function getMember($member)
     {
         $latestCert = \App\Models\MemberCertificate::where('member_id', $member->id)
@@ -162,6 +206,7 @@ class Presence extends Component
             $p->status = 0;
             $p->save();
         }
+        $this->emit('setSaving');
         return redirect()->to('/calendar');
 
     }
@@ -180,13 +225,15 @@ class Presence extends Component
 
     }
 
-    public function addMember($id)
+    public function addMember($ids)
     {
 
         $this->added = true;
         //if (!in_array($id, $this->newMembers))
         //    $this->newMembers[] = $id;
-        $this->member_id = $id;
+        
+        $this->member_ids = $ids;
+
         $this->emit('reload');
 
     }
@@ -242,11 +289,33 @@ class Presence extends Component
         }
         else
         {
-            if (!in_array($this->member_id, $this->newMembers))
-                $this->newMembers[] = $this->member_id;
-            $this->member_id = 0;
+
+            foreach($this->member_ids as $m)
+            {
+                if ($this->manual)
+                {
+                    //\App\Models\Presence::where('calendar_id', $this->calendar->id)->where('user_id', \Auth::user()->id)->where('status', '<>', 99)->delete();
+                    //foreach($ids as $id)
+                    //{
+                        $p = new \App\Models\Presence();
+                        $p->member_id = $m;
+                        $p->calendar_id = $this->calendar->id;
+                        $p->user_id = \Auth::user()->id;
+                        $p->status = 0;
+                        $p->save();
+                    //}
+                }
+                else
+                {
+                    if (!in_array($m, $this->newMembers))
+                        $this->newMembers[] = $m;
+                }
+            }
+
+            //$this->member_id = 0;
+            $this->member_ids = [];
             $this->added = false;
-            $this->emit('reload');
+            //$this->emit('reload');
             $this->emit('saved');
         }
     }
@@ -268,5 +337,11 @@ class Presence extends Component
 
     }
 
+    public function removeSingle($id)
+    {
+
+        \App\Models\Presence::where('calendar_id', $this->calendar->id)->where('member_id', $id)->delete();
+        $this->emit('reload');
 
+    }
 }

+ 3 - 0
app/Http/Livewire/Record.php

@@ -115,6 +115,7 @@ class Record extends Component
                 'records_rows.updated_at as row_updated_at'
             )
             ->join('records_rows', 'records.id', '=', 'records_rows.record_id')
+            ->where('records.deleted', false)
             ->whereBetween('date', [$fromDate, $toDate])
             ->where(function ($query) {
                 $query->where('type', 'OUT')
@@ -338,6 +339,7 @@ class Record extends Component
                 'records_rows.vat_id',
             )
             ->join('records_rows', 'records.id', '=', 'records_rows.record_id')
+            ->where('records.deleted', false)
             ->whereBetween('date', [$fromDate, $toDate])
             ->where(function ($query) {
                 $query->where('type', 'OUT')
@@ -572,6 +574,7 @@ class Record extends Component
                 'records_rows.vat_id',
             )
             ->join('records_rows', 'records.id', '=', 'records_rows.record_id')
+            ->where('records.deleted', false)
             ->whereBetween('date', [$this->appliedFromDate, $this->appliedToDate])
             ->where(function ($query) {
                 $query->where('type', 'OUT')

+ 2 - 1
app/Models/Motivation.php

@@ -11,6 +11,7 @@ class Motivation extends Model
 
     protected $fillable = [
         'name',
-        'enabled'
+        'enabled',
+        'type'
     ];
 }

+ 12 - 6
resources/views/livewire/calendar.blade.php

@@ -37,11 +37,14 @@
                 </div>
                 <div class="modal-body">
                     <div class="row">
-                        <div class="col-md-6">
+                        <div class="col-md-3">
                             <label for="course_subscription_id" class="form-label">Ora inizio</label>
                             <h3 class="time">ORA</h3>
                         </div>
-                        <div class="col-md-6">
+                        <div class="col-md-1">
+                            <div style="border-left: 1px solid black;height: 100px;"></div>
+                        </div>
+                        <div class="col-md-8">
                             <label class="form-label date">Martdì aaa</label>
                             <h3 class="title">Padel</h3>
                         </div>
@@ -56,14 +59,15 @@
                                 @endforeach
                             </select>
                             <br>
-                            <button type="button" class="btn--ui primary" onclick="deleteCalendar()" style="background-color:red !important">Annulla lezione</button>
+                            
                         </div>
                         
                     </div>                
                 </div>
                 <div class="modal-footer mt-2">
-                    <button class="btn--ui lightGrey" onclick="showDelete()">Annulla Lezione</a>
-                    <button type="button" class="btn--ui btn-primary" onclick="goPresence()">Presenze</button>
+                    <button class="btn--ui lightGrey hideDelete" onclick="showDelete()">Annulla Lezione</a>
+                    <button type="button" class="btn--ui btn-primary hideDelete" onclick="goPresence()">Presenze</button>
+                    <button type="button" class="btn--ui primary showDelete" onclick="deleteCalendar()" style="display:none">Annulla lezione</button>
                 </div>
             </div>
         </div>
@@ -238,6 +242,7 @@
             var calendarEl = document.getElementById('calendar');
             var calendar = new FullCalendar.Calendar(calendarEl, {
                 initialView: 'timeGridWeek',
+                slotMinTime: '06:00:00',
                 headerToolbar: {
                     left: 'prevYear,prev,next,nextYear today',
                     center: 'title',
@@ -278,7 +283,8 @@
         } );
 
         function showDelete() {
-            jQuery(".showDelete").show()
+            jQuery(".hideDelete").hide();
+            jQuery(".showDelete").show();
         }
 
         function pad(num, size) {

+ 1 - 1
resources/views/livewire/motivation.blade.php

@@ -9,7 +9,7 @@
         <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">Motivazioni annullamento</h2>
+                <h2 class="primary">Motivazioni</h2>
             </div>
 
             <div class="title--section_addButton"  wire:click="add()" style="cursor: pointer;">

+ 78 - 21
resources/views/livewire/presence.blade.php

@@ -2,8 +2,6 @@
 
     <a class="btn--ui lightGrey" href="/calendar"><i class="fa-solid fa-arrow-left"></i></a><br><br>
 
-    
-        
         <div class="compare--chart_wrapper d-none"></div>
 
         <div class="row">
@@ -11,17 +9,17 @@
                 <h3>{{$calendar->course ? $calendar->course->name : $calendar->name}}</h3>
             </div>
             <div class="col-md-6">
-                <h3>{{date("l d F", strtotime($calendar->from))}}, ora inizio {{date("H:i", strtotime($calendar->from))}}</h3>
+                <h3>{!!$this->getDateX()!!}, ora inizio {{date("H:i", strtotime($calendar->from))}}</h3>
             </div>
 
             @if($manual)
 
                 <div class="col-md-6">
                     <label for="court_id" class="form-label">Motivazione</label>
-                    <select class="form-select form-select-lg me-1 " wire:model="motivation_manual_id">
+                    <select class="form-select form-select-lg me-1 " id="motivation_manual_id">
                         <option value="">
                         @foreach($motivations_add as $m)
-                            <option value="{{$m->id}}">{{$m->name}}</option>
+                            <option value="{{$m->id}}" {{$motivation_manual_id == $m->id ? 'selected' : ''}}>{{$m->name}}</option>
                         @endforeach
                     </select>
                 </div>
@@ -51,7 +49,7 @@
                 </div>
 
                 <div class="col-md-12 mt-3">
-                    <input class="form-control" id="note" placeholder="Note" wire:model="note"></input>
+                    <textarea class="form-control" id="note" placeholder="Note" wire:model="note"></textarea>
                 </div>
             @endif
 
@@ -60,6 +58,10 @@
         <section id="resume-table" class="mt-3"  style="margin-bottom:20px">
             <div class="compare--chart_wrapper d-none"></div>
 
+            <div class="input-group mb-3">
+                <input type="text" class="form-control" placeholder="Cerca utente" wire:model="filter">
+            </div>
+        
             <table class="table tablesaw tableHead tablesaw-stack" id="tablesaw-350" width="100%">
                 <thead>
                     <tr>
@@ -73,7 +75,7 @@
                 <tbody id="checkall-target">
                     @foreach($records as $idx => $record)
                         <tr>
-                            <td>{{$idx}}</td>
+                            <td>{{$idx + 1}}</td>
                             <td>{{$record["last_name"]}}</td>
                             <td>{{$record["first_name"]}}</td>                            
                             <td>
@@ -96,12 +98,16 @@
                                 @if ($record["status"] != 99)
                                     @if ($record["presence"])
                                         @if ($record["my_presence"])
-                                            <input class="member" type="checkbox" value="{{$record["id"]}}" {{$record["presence"] ? 'checked' : ''}}>
+                                            @if($manual)
+                                                <a class="btn--ui primary" style="color:white;background-color:rgb(111, 31, 31) !important" onclick="removeSingle({{$record['id']}})">Elimina</a>
+                                            @else
+                                                <input class="member chkM" type="checkbox" value="{{$record["id"]}}" {{$record["presence"] ? 'checked' : ''}}>
+                                            @endif
                                         @else
-                                            V
+                                            &#10003;
                                         @endif
                                     @else
-                                        <input class="member" type="checkbox" value="{{$record["id"]}}" {{$record["presence"] ? 'checked' : ''}}>
+                                        <input class="member chkM" type="checkbox" value="{{$record["id"]}}" {{$record["presence"] ? 'checked' : ''}}>
                                     @endif
                                 @else
                                     Annullata
@@ -115,6 +121,7 @@
 
         </section>
 
+        
         <div class="row">
             @if($calendar->status == 0)
                 <div class="col-md-6">      
@@ -127,23 +134,29 @@
                                     <option value="{{$m["id"]}}">{{$m["name"]}}</option>
                                 @endforeach
                             </select>
+                            <div class="showDelete" style="float:left;display:none;"><br><button type="button" class="btn--ui " style="background-color:rgb(111, 31, 31)!important" onclick="cancel()">Annulla lezione selezionati</button>
+                            <button type="button" class="btn--ui " onclick="hideShowDelete()">Torna</button></div>
+                            
                         </div>
+                        <button type="button" class="btn--ui primary btSave" style="background-color:rgb(111, 31, 31) !important" onclick="showHideDelete()">Annulla lezione per selezionati</button>                    
                         
                     @endif              
-                    <button type="button" class="btn--ui primary btSave" data-bs-toggle="modal" data-bs-target="#userModal" >Aggiungi utente</button>
+                    <button type="button" class="btn--ui primary btSave btAdd" data-bs-toggle="modal" data-bs-target="#userModal" >Aggiungi utente</button>
                 </div>
                 <div class="col-md-6 text-end">
-                    <div class="showDelete" style="display:none;"><br><button type="button" class="btn--ui " style="background-color:red !important" onclick="cancel()">Annulla lezione selezionati</button></div>
-                    <button type="button" class="btn--ui btSave" onclick="save()">Salva</button>             
+                    @if(!$manual)
+                        <button type="button" class="btn--ui btSave" onclick="save()">Salva</button>             
+                    @endif
                 </div>
             @endif
         </div>
 
         <div class="row mt-3">
             @if($calendar->status == 0)
-                <div class="col-md-6">
-                    <button type="button" class="btn--ui primary btSave" style="background-color:red !important" onclick="showHideDelete()">Annulla lezione per selezionati</button>                    
-                </div>                                
+                @if(!$manual)
+                    <div class="col-md-6">
+                    </div>                                
+                @endif
             @else
                 LEZIONE ANNULLATA
             @endif
@@ -151,7 +164,7 @@
 
     
 
-    <div  wire:ignore.self class="modal fade" id="userModal" tabindex="-1" aria-labelledby="userModalLabel" aria-hidden="true">
+    <div  wire:ignore.self class="modal modal-lg fade" id="userModal" tabindex="-1" aria-labelledby="userModalLabel" aria-hidden="true">
         <div class="modal-dialog">
             <div class="modal-content">
             <div class="modal-header">
@@ -159,10 +172,11 @@
                 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
             </div>
             <div class="modal-body">
+                <h3>Utente presente</h3>
                 <div class="row mt-2">
                     <div class="col-md-6">
-                        <label for="member_id" class="form-label">Aggiunge una persona</label>
-                        <select name="member_id" class="form-select memberClass" aria-label="Seleziona una persona" wire:model="member_id">
+                        <label for="member_id" class="form-label">Aggiunge una o più persone</label>
+                        <select name="member_id" class="form-select memberClass" aria-label="Seleziona una persona" wire:model="member_ids" multiple>
                             <option value="">--Seleziona--
                             @foreach($members as $member)
                                 <option value="{{$member->id}}">{{$member->last_name}} {{$member->first_name}} ({{$member->fiscal_code}})
@@ -179,9 +193,9 @@
                         </select>
                     </div>
                 </div>
-                <br>
-                ----- Oppure inserisci un nuovo utente ------
                 <br><br>
+                <h3>Inserimento nuovo utente</h3>
+                <br>
                 <div class="row">
                     <div class="col-md-6">
                         <label for="newMemberFirstName" class="form-label">Nome</label>
@@ -319,6 +333,9 @@
 @push('scripts')
     <script>
 
+        var showAlert = false;
+        var isSaving = false;
+
         $(document).ready(function() {
             
             setTimeout(() => {
@@ -331,6 +348,18 @@
                 });                
             }, 100);
 
+            $(".btAdd").click(function(){
+                showAlert = true;
+            });
+
+            $(".form-select").change(function(){
+                showAlert = true;
+            });
+
+            $(".chkM").click(function(){
+                showAlert = true;
+            });
+
         } );
 
         Livewire.on('reload', () => {
@@ -357,6 +386,10 @@
             $('#deleteModal').modal('hide');
         });
 
+        window.livewire.on('setSaving', () => {
+            isSaving = true;
+        });
+
         function save()
         {
             var ids = [];
@@ -368,6 +401,11 @@
                 }
             });
 
+            @if($manual)
+                var motivation_manual_id = $("#motivation_manual_id").val();
+                @this.set('motivation_manual_id', motivation_manual_id);
+            @endif
+
             @this.save(ids);
         }
 
@@ -385,6 +423,12 @@
             @this.cancel(ids, motivation_id);
         }
 
+        function removeSingle(id)
+        {
+            if (confirm('Sei sicuro?'))                
+                @this.removeSingle(id);
+        }
+
         function annulla()
         {
             $('#userModal').modal('hide');
@@ -397,6 +441,19 @@
             $(".showDelete").show();
             $(".btSave").hide();
         }
+
+        function hideShowDelete()
+        {
+            $(".showDelete").hide();
+            $(".btSave").show();
+        }
+
+        window.onbeforeunload = function(){
+            
+            if (showAlert && !isSaving)
+                return 'Sei sicuro';
+
+        };
         
     </script>
 @endpush

+ 1 - 1
resources/views/livewire/settings.blade.php

@@ -96,7 +96,7 @@
                 <hr size="1">
                 <a href="/motivations">
                     <div class="row">
-                        <div class="col-md-11 p-2"><h5>Motivazioni annullamento</h5></div>
+                        <div class="col-md-11 p-2"><h5>Motivazioni</h5></div>
                         <div class="col-md-1 p-2"><i class="fa-solid fa-chevron-right"></i></div>
                     </div>
                 </a>

+ 6 - 6
routes/web.php

@@ -35,7 +35,11 @@ Route::post('/login', function () {
 
     if(Auth::attempt(array('email' => $_POST["email"], 'password' => $_POST["password"])))
     {
-        return Redirect::to('/dashboard');
+        if (Auth::user()->level == ENV('INSTRUCTOR_LEVEL', 2))
+            return Redirect::to('/calendar');
+        else
+            return Redirect::to('/dashboard');
+
     } else {
         return Redirect::to('/?error=1');
     }
@@ -614,11 +618,7 @@ Route::get('/get_record_in', function () {
 
         
     }
-    print_r($aIds);
-    die;
-    Log::info('values', [$aIds]);
-    die;
-
+    
     $count = $x->count();
 
     if (isset($_GET["order"])) {