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->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 render() { $this->records = []; $presenceMembers = []; if (!$this->manual) { // Carco tutti gli iscritti a un corso padre in quel giorno con un range orario simile $days = ['dom', 'lun', 'mar', 'mer', 'gio', 'ven', 'sab']; $dow = date('w', strtotime($this->calendar->from)); $d = $days[$dow]; // 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(); $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->records[] = $this->getMember($member); } } // 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(); foreach($members as $member) { $this->records[] = $this->getMember($member); } foreach($this->newMembers as $m) { $member = \App\Models\Member::findOrFail($m); $this->records[] = $this->getMember($member); } /*$calendars = \App\Models\Calendar::get(); foreach($calendars as $c) { $this->records[] = array('id' => $c->id, 'title' => $c->course->name, 'start' => $c->from, 'end' => $c->to); }*/ return view('livewire.presence'); } public function getMember($member) { $latestCert = \App\Models\MemberCertificate::where('member_id', $member->id) ->orderBy('expire_date', 'desc') ->first(); $certificate = ''; $y = "|"; if ($latestCert) { $latest_date = $latestCert->expire_date; $status = ''; if ($latest_date < date("Y-m-d")) { $status = "0"; // Expired } else if ($latest_date <= date("Y-m-d", strtotime("+1 month"))) { $status = "1"; // Expiring soon } else { $status = "2"; // Valid } $y = $status . "|" . date("d/m/Y", strtotime($latest_date)); } $presence = false; $my_presence = false; $status = 0; $has_presence = \App\Models\Presence::where('calendar_id', $this->calendar->id)->where('member_id', $member->id)->first(); if ($has_presence) { $presence = true; $my_presence = $has_presence->user_id == \Auth::user()->id; $status = $has_presence->status; } 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); } public function save($ids) { $this->calendar->court_id = $this->court_id; $this->calendar->instructor_id = $this->instructor_id; $this->calendar->note = $this->note; if ($this->motivation_id != "" && $this->motivation_id != null) $this->calendar->motivation_id = $this->motivation_id; if ($this->motivation_manual_id != "" && $this->motivation_manual_id != null) $this->calendar->motivation_manual_id = $this->motivation_manual_id; $this->calendar->save(); \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 = $id; $p->calendar_id = $this->calendar->id; $p->user_id = \Auth::user()->id; $p->status = 0; $p->save(); } return redirect()->to('/calendar'); } public function cancel($ids, $motivation_id) { $presences = \App\Models\Presence::where('calendar_id', $this->calendar->id)->whereIn('member_id', $ids)->get(); foreach($presences as $presence) { $presence->motivation_id = $motivation_id; $presence->status = 99; $presence->save(); } return redirect()->to('/presences?calendarId=' . $this->calendar->id); } public function addMember($id) { $this->added = true; //if (!in_array($id, $this->newMembers)) // $this->newMembers[] = $id; $this->member_id = $id; $this->emit('reload'); } public function cancelCalendar() { $this->calendar->motivation_id = $this->motivation_id; $this->calendar->status = 99; $this->calendar->save(); return redirect()->to('/calendar'); } public function createMember() { if (!$this->added) { $this->newMemberFiscalCodeExist = false; $this->validate([ // 'newMemberFiscalCode'=>'required|max:16', 'newMemberFirstName'=>'required', 'newMemberLastName'=>'required', //'newMemberEmail'=>'required', ]); // Check fiscal code exist $exist = false; if ($this->newMemberFiscalCode != '') { $check = \App\Models\Member::where('fiscal_code', $this->newMemberFiscalCode)->get(); $exist = $check->count() > 0; } if (!$exist) { $member = \App\Models\Member::create([ 'first_name' => strtoupper($this->newMemberFirstName), 'last_name' => strtoupper($this->newMemberLastName), 'email' => strtoupper($this->newMemberEmail), 'to_complete' => $this->newMemberToComplete, 'fiscal_code' => $this->newMemberFiscalCode, 'status' => true ]); if (!in_array($member->id, $this->newMembers)) $this->newMembers[] = $member->id; $this->emit('reload'); $this->emit('saved'); } else { $this->newMemberFiscalCodeExist = true; } } else { if (!in_array($this->member_id, $this->newMembers)) $this->newMembers[] = $this->member_id; $this->member_id = 0; $this->added = false; $this->emit('reload'); $this->emit('saved'); } } public function createInstructor() { $user = \App\Models\User::create([ 'name' => $this->userName, 'email' => $this->userEmail, 'password' => '', 'level' => 2, 'enabled' => true ]); $this->instructor_id = $user->id; $this->instructors = \App\Models\User::select('*')->where('level', 2)->where('enabled', true)->get(); $this->emit('saved'); } }