瀏覽代碼

Fix logiche presenze

Luca Parisio 5 月之前
父節點
當前提交
36c748f87a

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

@@ -64,7 +64,8 @@ class Calendar extends Component
             $calendars = \App\Models\Calendar::get();
         foreach($calendars as $c)
         {
-            $data = array('id' => $c->id, 'title' => $c->course ? $c->course->name : $c->name . ($c->status == 99 ? ' (annullata)' : ''), 'start' => $c->from, 'end' => $c->to);
+            $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);
             if ($c->course && $c->course->color != '')
                 $data['color'] = $c->course->color;
             if ($c->status == 99)

+ 25 - 1
app/Http/Livewire/Member.php

@@ -31,6 +31,8 @@ class Member extends Component
 
     public $selectedCourseMember = 0;
 
+    public $festivita = [];
+
     protected $messages = [
         'birth_nation_id.required' => 'birth_nation_id',
         'birth_province_id.required' => 'birth_province_id',
@@ -475,6 +477,28 @@ class Member extends Component
             $this->showDetailF($_GET["member_detail"]);
             $this->refreshAfter = 1;
         }
+
+        // Anni dal 2025 al 2040
+        for ($anno = 2025; $anno <= 2040; $anno++) {
+            // Festività fisse
+            $this->festivita[] = "$anno-01-01"; // Capodanno
+            $this->festivita[] = "$anno-01-06"; // Epifania
+            $this->festivita[] = "$anno-04-25"; // Festa della Liberazione
+            $this->festivita[] = "$anno-05-01"; // Festa del Lavoro
+            $this->festivita[] = "$anno-06-02"; // Festa della Repubblica
+            $this->festivita[] = "$anno-08-15"; // Ferragosto
+            $this->festivita[] = "$anno-11-01"; // Ognissanti
+            $this->festivita[] = "$anno-12-08"; // Immacolata Concezione
+            $this->festivita[] = "$anno-12-25"; // Natale
+            $this->festivita[] = "$anno-12-26"; // Santo Stefano
+
+            // Calcolo Pasqua e Pasquetta
+            $pasqua = date("Y-m-d", easter_date($anno));
+            $pasquetta = date("Y-m-d", strtotime("$pasqua +1 day"));
+            $this->festivita[] = $pasqua;     // Domenica di Pasqua
+            $this->festivita[] = $pasquetta;  // Lunedì dell'Angelo
+        }
+
     }
 
     public function updated()
@@ -1520,7 +1544,7 @@ class Member extends Component
                                 // 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)
+                                if (!$exist && !in_array(date('Y-m-d', $i), $this->festivita))
                                 {
 
                                     // Creo il calendario del corso

+ 14 - 2
app/Http/Livewire/Presence.php

@@ -180,6 +180,12 @@ class Presence extends Component
             $status = $has_presence->status;
         }
 
+        if (in_array($member->id, $this->newMembers))
+        {
+            $presence = true;
+            $my_presence = true;
+        }
+
         return array('id' => $member->id, 'first_name' => $member->first_name, 'last_name' => $member->last_name, 'certificate' => $y, 'presence' => $presence, 'my_presence' => $my_presence, 'status' => $status);
 
     }
@@ -272,7 +278,7 @@ class Presence extends Component
                     'first_name' => strtoupper($this->newMemberFirstName),
                     'last_name' => strtoupper($this->newMemberLastName),
                     'email' => strtoupper($this->newMemberEmail),
-                    'to_complete' => $this->newMemberToComplete,
+                    'to_complete' => true,
                     'fiscal_code' => $this->newMemberFiscalCode,
                     'status' => true
                 ]);
@@ -281,6 +287,10 @@ class Presence extends Component
                     $this->newMembers[] = $member->id;
                 $this->emit('reload');
                 $this->emit('saved');
+                $this->newMemberFirstName = '';
+                $this->newMemberLastName = '';
+                $this->newMemberEmail = '';
+                $this->newMemberFiscalCode = '';
             }
             else
             {
@@ -300,6 +310,7 @@ class Presence extends Component
                         $p = new \App\Models\Presence();
                         $p->member_id = $m;
                         $p->calendar_id = $this->calendar->id;
+                        $p->motivation_id = $this->newMemberMotivationId;
                         $p->user_id = \Auth::user()->id;
                         $p->status = 0;
                         $p->save();
@@ -315,7 +326,8 @@ class Presence extends Component
             //$this->member_id = 0;
             $this->member_ids = [];
             $this->added = false;
-            //$this->emit('reload');
+            
+            $this->emit('reload');
             $this->emit('saved');
         }
     }

+ 5 - 0
app/Models/Calendar.php

@@ -30,4 +30,9 @@ class Calendar extends Model
     {
         return $this->belongsTo(\App\Models\Course::class);
     }
+
+    public function motivation()
+    {
+        return $this->belongsTo(\App\Models\Motivation::class);
+    }
 }

+ 1 - 0
app/Models/Presence.php

@@ -14,6 +14,7 @@ class Presence extends Model
         'calendar_id',
         'member_course_id',
         'user_id',
+        'motivation_id'
     ];
 
     public function member()

+ 38 - 22
resources/views/livewire/presence.blade.php

@@ -129,12 +129,13 @@
 
         </section>
 
-        
-        <div class="row">
-            <div class="col">    
-                <button type="button" class="btn--ui primary btSave btAdd" data-bs-toggle="modal" data-bs-target="#userModal" >Aggiungi utente</button>
+        @if($calendar->status == 0)
+            <div class="row">
+                <div class="col">    
+                    <button type="button" class="btn--ui primary btSave btAdd" data-bs-toggle="modal" data-bs-target="#userModal" >Aggiungi utente</button>
+                </div>
             </div>
-        </div>
+        @endif
         <br>
         <br>
         <div class="row">
@@ -148,13 +149,7 @@
                                 @foreach($motivations as $m)
                                     <option value="{{$m["id"]}}">{{$m["name"]}}</option>
                                 @endforeach
-                            </select>
-                            <div class="showDelete" style="float:left;display:none;">
-                                <br>
-                                <button type="button" class="btn--ui lightGrey" onclick="hideShowDelete()">Indietro</button>
-                                <button type="button" class="btn--ui" {{-- style="background-color:rgb(111, 31, 31)!important" --}} onclick="cancel()">Conferma</button>
-                        </div>
-                            
+                            </select>                            
                         </div>
                         <button type="button" class="btn--ui lightGrey btSave" {{-- style="background-color:rgb(111, 31, 31) !important" --}} onclick="showHideDelete()">Annulla lezione per selezionati</button>                    
                         
@@ -162,7 +157,11 @@
                 </div>
                 <div class="col-auto text-end">
                     @if(!$manual)
-                        <button type="button" class="btn--ui btSave" onclick="save()">Salva</button>             
+                        <button type="button" class="btn--ui btSave" onclick="save()">Salva</button>        
+                        <div class="showDelete" style="float:left;display:none;">
+                            <button type="button" class="btn--ui lightGrey btSaveDelete" onclick="hideShowDelete()">Indietro</button>     
+                            <button type="button" class="btn--ui btSaveDelete" onclick="cancel()">Salva</button>             
+                        </div>
                     @endif
                 </div>
             @endif
@@ -175,12 +174,10 @@
                     </div>                                
                 @endif
             @else
-                LEZIONE ANNULLATA
+                LEZIONE ANNULLATA ({{$calendar->motivation ? $calendar->motivation->name : ''}})
             @endif
         </div>
 
-    
-
     <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">
@@ -202,7 +199,7 @@
                         </div>
                         <div class="col-md-6">
                             <label for="newMotivation" class="form-label">Motivazione</label>
-                            <select class="form-select form-select-lg me-1 " wire:model="newMemberMotivationId">
+                            <select class="form-select form-select-lg me-1 " id="newMemberMotivationId">
                                 <option value="">
                                 @foreach($motivations_add as $m)
                                     <option value="{{$m["id"]}}">{{$m["name"]}}</option>
@@ -218,21 +215,21 @@
                     <div class="row">
                         <div class="col-md-6">
                             <label for="newMemberFirstName" class="form-label">Nome</label>
-                            <input class="form-control @error('newMemberFirstName') is-invalid @enderror" type="text" id="newMemberFirstName" placeholder="Nome" wire:model="newMemberFirstName">
+                            <input class="form-control @error('newMemberFirstName') is-invalid @enderror" type="text" id="newMemberFirstName" placeholder="Nome" >
                         </div>
                         <div class="col-md-6">
                             <label for="newMemberLastName" class="form-label">Cognome</label>
-                            <input class="form-control @error('newMemberLastName') is-invalid @enderror" type="text" id="newMemberLastName" placeholder="Cognome" wire:model="newMemberLastName">
+                            <input class="form-control @error('newMemberLastName') is-invalid @enderror" type="text" id="newMemberLastName" placeholder="Cognome" >
                         </div>
                     </div>
                     <div class="row mt-2">
                         <div class="col-md-6">
                             <label for="newMemberEmail" class="form-label">Email</label>
-                            <input class="form-control @error('newMemberEmail') is-invalid @enderror" type="text" id="newMemberEmail" placeholder="Email" wire:model="newMemberEmail">
+                            <input class="form-control @error('newMemberEmail') is-invalid @enderror" type="text" id="newMemberEmail" placeholder="Email">
                         </div>
                         <div class="col-md-6">
                             <label for="newMemberFiscalCode" class="form-label">Codice fiscale</label>
-                            <input class="form-control @error('newMemberFiscalCode') is-invalid @enderror" type="text" id="newMemberFiscalCode" placeholder="Codice fiscale" maxlength="16" wire:model="newMemberFiscalCode">                        
+                            <input class="form-control @error('newMemberFiscalCode') is-invalid @enderror" type="text" id="newMemberFiscalCode" placeholder="Codice fiscale" maxlength="16">                        
                         </div>
                     </div>
                     <div class="row mt-2">
@@ -244,7 +241,7 @@
                 </div>
                 <div class="modal-footer">
                     <button class="btn--ui lightGrey" onclick="annulla()">annulla</a>
-                    <button type="button" class="btn--ui btn-primary" wire:click.prevent="createMember()">Salva</button>
+                    <button type="button" class="btn--ui btn-primary" onclick="createMember()">Salva</button>
                 </div>
             </div>
         </div>
@@ -442,6 +439,25 @@
             @this.cancel(ids, motivation_id);
         }
 
+        function createMember()
+        {
+            var ids = [];
+            /*$('input[type=checkbox]').each(function () {
+                if ($(this).is(":checked")) 
+                {
+                    var val = $(this).val();
+                    ids.push(val);
+                }
+            });*/
+            
+            @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();
+        }
+
         function removeSingle(id)
         {
             if (confirm('Sei sicuro?'))