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

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

@@ -65,7 +65,7 @@ class Calendar extends Component
         foreach($calendars as $c)
         {
             $s = $c->motivation ? $c->motivation->name : '';
-            $data = array('id' => $c->id, 'title' => $c->course ? $c->course->name : $c->name . ($c->status == 99 ? ' (annullata - ' . $s . ')' : ''), 'start' => $c->from, 'end' => $c->to);
+            $data = array('id' => $c->id, 'title' => ($c->course ? $c->course->name : $c->name) . ($c->status == 99 ? ' (annullata - ' . $s . ')' : ''), 'start' => $c->from, 'end' => $c->to);
             if ($c->course && $c->course->color != '')
                 $data['color'] = $c->course->color;
             if ($c->status == 99)
@@ -75,7 +75,7 @@ class Calendar extends Component
 
         for ($anno = 2025; $anno <= 2040; $anno++) {
 
-            $color = "grey";
+            $color = "lightgrey";
             $this->records[] = array('id' => 0, 'title' => 'Capodanno', 'start' => "$anno-01-01 00:00:00", 'end' => "$anno-01-01 23:59:59", 'color' => $color);
             $this->records[] = array('id' => 0, 'title' => 'Epifania', 'start' => "$anno-01-06 00:00:00", 'end' => "$anno-01-06 23:59:59", 'color' => $color);
             $this->records[] = array('id' => 0, 'title' => 'Festa della Liberazione', 'start' => "$anno-04-25 00:00:00", 'end' => "$anno-04-25 23:59:59", 'color' => $color);

+ 96 - 0
app/Http/Livewire/Member.php

@@ -1744,6 +1744,8 @@ class Member extends Component
                     $this->course_months[] = array("m" => $z->m, "status" => $z->status);
                 }
                 $this->courseDataId = $memberCourse->id;
+
+                
                 $this->updateCourse = true;
                 $this->addCourse = false;
                 $this->emit('setEditCorso', true);
@@ -1773,6 +1775,100 @@ class Member extends Component
                 'months' => json_encode($this->course_months),
                 'when' => json_encode($this->course_when)
             ]);
+
+            $course_name = '';
+            // Se il corso ha associato una categoria iscrivo anche al gruppo
+            $c = \App\Models\Course::findOrFail($this->course_course_id);
+            if ($c) {
+                if ($c->category_id > 0) {
+                    \App\Models\MemberCategory::create([
+                        'member_id' => $this->dataId,
+                        'category_id' => $c->category_id,
+                        'date' => \Carbon\Carbon::now()
+                    ]);
+                }
+                $course_name = $c->name;
+            }
+
+            $days = array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday');
+
+            //foreach($this->course_months as $m)
+            //{
+
+            $from = date("Y-m-d", strtotime($c->date_from));
+            $to = date("Y-m-d", strtotime($c->date_to));
+
+            $endDate = strtotime($to);
+
+            foreach($this->course_when as $d)
+            {
+
+                foreach($d["day"] as $dd)
+                {
+
+                    $day = '';
+                    switch ($dd) {
+                        case 'lun':
+                            $day = $days[0];
+                            break;
+                        case 'mar':
+                            $day = $days[1];
+                            break;
+                        case 'mer':
+                            $day = $days[2];
+                            break;
+                        case 'gio':
+                            $day = $days[3];
+                            break;
+                        case 'ven':
+                            $day = $days[4];
+                            break;
+                        case 'sab':
+                            $day = $days[5];
+                            break;
+                        case 'dom':
+                            $day = $days[6];
+                            break;
+                        default:
+                            $day = '';
+                            break;
+                    }
+                    
+                    if ($day != '')
+                    {
+                        for($i = strtotime($day, strtotime($from)); $i <= $endDate; $i = strtotime('+1 week', $i))
+                        {
+
+                            // Controllo che non esiste un corso così
+                            $exist = \App\Models\Calendar::where('from', date('Y-m-d ' . $d["from"] . ":00", $i))->where('to', date('Y-m-d ' . $d["to"] . ":00", $i))->where('name', $course_name)->first();
+
+                            if (!$exist && !in_array(date('Y-m-d', $i), $this->festivita))
+                            {
+
+                                // Creo il calendario del corso
+                                $calendar = new \App\Models\Calendar();
+                                $calendar->course_id = $this->course_course_id;
+                                $calendar->court_id = null;
+                                $calendar->name = $course_name;
+                                $calendar->course_type_id = null;
+                                $calendar->course_duration_id = null;
+                                $calendar->course_frequency_id = null;
+                                $calendar->course_level_id = null;
+                                $calendar->instructor_id = null;
+                                $calendar->from = date('Y-m-d ' . $d["from"] . ":00", $i);
+                                $calendar->to = date('Y-m-d ' . $d["to"] . ":00", $i);
+                                $calendar->note = '';
+                                $calendar->status = 0;
+                                $calendar->save();
+
+                            }
+                            
+                        }
+                    }
+                }
+            }
+
+
             session()->flash('success', 'Corso aggiornato');
             $this->resetCourseFields();
             $this->updateCourse = false;

+ 11 - 0
app/Http/Livewire/Presence.php

@@ -77,6 +77,7 @@ class Presence extends Component
             // Elenco corsi per tipologia in base al calendario
             $courses = \App\Models\Course::where('name', $this->calendar->name)->where('date_from', '<=', $this->calendar->from)->where('date_to', '>=', $this->calendar->to)->pluck('id')->toArray();
 
+
             // Elenco utenti iscritti al corso "padre"
             $members_courses = \App\Models\MemberCourse::where('when', 'like', "%" . $d . "%")->whereIn('course_id', $courses)->pluck('member_id')->toArray();
 
@@ -359,4 +360,14 @@ class Presence extends Component
         $this->emit('reload');
 
     }
+
+    public function revert($id)
+    {
+
+        $p = \App\Models\Presence::where('calendar_id', $this->calendar->id)->where('member_id', $id)->first();
+        $p->status = 0;
+        $p->save();
+        $this->emit('reload');
+
+    }
 }

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

@@ -67,7 +67,7 @@
                     </div>                
                 </div>
                 <div class="modal-footer mt-2 justify-content-between">
-                    <button class="btn--ui lightGrey hideDelete" onclick="showDelete()">Annulla Lezione</a>
+                    <button class="btn--ui lightGrey hideDelete hideDeleteButton" 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>
@@ -267,6 +267,14 @@
                     var datestring = eventDate.getFullYear() + "-" + pad(eventDate.getMonth()+1, 2) + "-" + pad(eventDate.getDate(), 2) + " " + pad(eventDate.getHours(), 2) + ":" + pad(eventDate.getMinutes(), 2) + ":00";
                     var title = info.event.title;
                     $(".title").html(title);
+                    if (title.includes("annullata"))
+                    {
+                        $(".hideDeleteButton").css("display", "none");
+                    }
+                    else
+                    {
+                        $(".hideDeleteButton").css("display", "block");
+                    }
                     $(".time").html(pad(eventDate.getHours(), 2) + ":" + pad(eventDate.getMinutes(), 2));
                     $(".date").html(eventDate.toLocaleDateString('it-IT', { weekday: 'long' }) + " " + pad(eventDate.getDate(), 2) + " " + eventDate.toLocaleDateString('it-IT', { month: 'long' }));
                     currentCalendar = info.event.id;

+ 23 - 9
resources/views/livewire/presence.blade.php

@@ -112,13 +112,14 @@
                                                 <input class="member chkM" type="checkbox" value="{{$record["id"]}}" {{$record["presence"] ? 'checked' : ''}}>
                                             @endif
                                         @else
-                                            &#10003;
+                                            <span style="color:#0C6197;font-size:25px;">&#10003;</span>
                                         @endif
+                                        
                                     @else
                                         <input class="member chkM" type="checkbox" value="{{$record["id"]}}" {{$record["presence"] ? 'checked' : ''}}>
                                     @endif
                                 @else
-                                    Annullata
+                                    Annullata (<a href="#" wire:click="revert({{$record["id"]}})">Ripristina</a>)
                                 @endif
                             </td>
                         </tr>
@@ -183,6 +184,7 @@
             <div class="modal-content">
                 <div class="modal-header">
                     <h5 class="modal-title text-primary" id="userModalLabel">Inserimento nuovo utente</h5>
+                    
                     <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                 </div>
                 <div class="modal-body">
@@ -211,7 +213,9 @@
                     <hr>
                     <br>
                     <h3 class="text-primary">Inserimento nuovo utente</h3>
+                    <small>Se hai selezionato un utente già registrato inserira solamente quello</small>
                     <br>
+                    <span style="color:red;display:none" class="error">Tutti i campi sono obbligatori</span>
                     <div class="row">
                         <div class="col-md-6">
                             <label for="newMemberFirstName" class="form-label">Nome</label>
@@ -391,7 +395,7 @@
             $(".showDelete").hide();
             $(".btSave").show();
 
-            //$("#newMemberMotivationId").val('');
+            $("#newMemberMotivationId").val('');
             $("#newMemberFirstName").val('');
             $("#newMemberLastName").val('');
             $("#newMemberEmail").val('');
@@ -457,19 +461,29 @@
                 }
             });*/
 
+            $(".error").hide();
+
             var data = $('.memberClass').select2("val");
             if (data != null)
             {
                 @this.addMember(data);
             }
             
-            @this.set('newMemberMotivationId', $("#newMemberMotivationId").val());
-            @this.set('newMemberFirstName', $("#newMemberFirstName").val());
-            @this.set('newMemberLastName', $("#newMemberLastName").val());
-            @this.set('newMemberEmail', $("#newMemberEmail").val());
-            @this.set('newMemberFiscalCode', $("#newMemberFiscalCode").val());
+            if (data == null && ($("#newMemberFirstName").val() == '' || $("#newMemberLastName").val() == '' || $("#newMemberEmail").val() == '' || $("#newMemberFiscalCode").val() == ''))
+            {
+                $(".error").show();
+            }
+            else
+            {
 
-            @this.createMember();
+                @this.set('newMemberMotivationId', $("#newMemberMotivationId").val());
+                @this.set('newMemberFirstName', $("#newMemberFirstName").val());
+                @this.set('newMemberLastName', $("#newMemberLastName").val());
+                @this.set('newMemberEmail', $("#newMemberEmail").val());
+                @this.set('newMemberFiscalCode', $("#newMemberFiscalCode").val());
+                
+                @this.createMember();
+            }
            
         }