/** * Execute the console command. * * @return mixed */ public function handle() { $this->comment(PHP_EOL . 'adding' . PHP_EOL); $WiziqApi = new WiziqApi(); // $report = $WiziqApi->getAttendanceReport(5435948); // var_dump($report); // exit; $sessions = ClassroomSession::select('classroom_sessions.id', 'classroom_sessions.wiziq_id', 'classroom_sessions.title', 'classroom_sessions.classroom_id', 'classroom_sessions.subject_subject_id')->leftJoin('classroom_session_attendances as csa', 'classroom_sessions.id', '=', 'csa.classroom_session_id')->whereNull('csa.id')->with('subject')->groupBy('classroom_sessions.id')->whereCanceled(0)->whereDate('classroom_sessions.start_at', '>', date('2016-10-30'))->where('start_at', '<', date('Y-m-d H:i:s', strtotime('-60 minutes')))->get(); $this->comment(PHP_EOL . $sessions->count() . PHP_EOL); foreach ($sessions as $session) { $all_classroom_students = ClassroomStudent::where('classroom_id', $session->classroom_id)->where('semester_id', semester()->id)->pluck('student_id')->toArray(); // $WiziqApi = new WiziqApi; try { $report = $WiziqApi->getAttendanceReport($session->wiziq_id); } catch (\mikemix\Wiziq\Common\Api\Exception\CallException $e) { continue; } if (empty($report)) { continue; } ClassroomSession::where('id', $session->id)->update(['wiziq_status' => 'completed', 'wiziq_recording_status' => 'available']); // $session->wiziq_status = 'completed'; // $session->wiziq_recording_status = 'available'; // $session->save(); $attendances = collect(); // var_dump($report); // exit; // dd('out'); foreach ($report as $attendee) { $student_id = NULL; $teacher_id = NULL; if (empty($attendee['presenter_id']) && !empty($attendee['attendee_id'])) { $student_id = $attendee['attendee_id']; if (!in_array($student_id, $all_classroom_students)) { continue; } } elseif (!empty($attendee['presenter_id'])) { $teacher_id = $attendee['presenter_id']; } else { continue; } $data = ['teacher_id' => $teacher_id, 'student_id' => $student_id, 'classroom_session_id' => $session->id, 'entry_time' => Date::parse($attendee['entry_time'])->format('Y-m-d H:i:s'), 'exit_time' => Date::parse($attendee['exit_time'])->format('Y-m-d H:i:s'), 'attended_minutes' => $attendee['attended_minutes']]; $attendance = ClassroomSessionAttendance::create($data); if ($student_id && in_array($student_id, $all_classroom_students)) { $data = ['student_id' => $student_id, 'subject_id' => $session->subject_subject_id, 'value' => $session->subject->hours == 2 ? 2.5 : 2, 'ref_key' => 'attendance', 'notes' => trans('classrooms::attendances.attended_for', ['attended_minutes' => $attendance->attended_minutes, 'session' => $session->title, 'subject' => $session->subject->name]), 'ref_value' => $attendance->id]; $StudentGrade = new StudentGrade(); $StudentGrade->fill($data)->save(); } else { // $data['teacher_id'] = $attendance->teacher_id; TeacherFund::create(['teacher_id' => $teacher_id, 'amount' => config('classrooms.payment_per_session'), 'reference_key' => 'session', 'reference_id' => $session->id, 'semester_id' => semester()->id]); } $attendances->push($attendance); } $student_ids = $attendances->whereLoose('teacher_id', NULL)->pluck('student_id')->toArray(); $students = Student::whereHas('classrooms', function ($query) use($session) { return $query->where('classrooms.id', $session->classroom_id); })->whereNotIn('id', $student_ids)->get(); foreach ($students as $student) { $data = ['teacher_id' => NULL, 'student_id' => $student->id, 'classroom_session_id' => $session->id, 'entry_time' => NULL, 'exit_time' => NULL, 'attended_minutes' => 0, 'manual' => 1, 'valid' => 0]; event(new StudentAbsentSession($student, $session, $session->subject)); ClassroomSessionAttendance::create($data); // $attendances->push($attendance); } } $this->comment(PHP_EOL . 'added' . PHP_EOL); }
private function generateReport($session) { $WiziqApi = new WiziqApi(); $report = $WiziqApi->getAttendanceReport($session->wiziq_id); $attendances = collect(); foreach ($report as $attendee) { $data = ['teacher_id' => !empty($attendee['presenter']) ? $attendee['attendee_id'] : NULL, 'student_id' => empty($attendee['presenter']) ? $attendee['attendee_id'] : NULL, 'classroom_session_id' => $session->id, 'entry_time' => Date::parse($attendee['entry_time'])->format('Y-m-d H:i:s'), 'exit_time' => Date::parse($attendee['exit_time'])->format('Y-m-d H:i:s'), 'attended_minutes' => $attendee['attended_minutes']]; $attendance = ClassroomSessionAttendance::create($data); if ($attendance->student_id) { $data = ['student_id' => $attendance->student_id, 'subject_id' => $session->subject_subject_id, 'value' => $session->subject->hours == 2 ? 2.5 : 2, 'ref_key' => 'attendance', 'notes' => trans('classrooms::attendances.attended_for', ['attended_minutes' => $attendance->attended_minutes, 'session' => $session->title, 'subject' => $session->subject->name]), 'ref_value' => $attendance->id]; $StudentGrade = new StudentGrade(); $StudentGrade->fill($data)->save(); } $attendances->push($attendance); } $student_ids = $attendances->whereLoose('teacher_id', NULL)->pluck('student_id')->toArray(); $students = Student::whereHas('classrooms', function ($query) use($session) { return $query->where('classrooms.id', $session->classroom_id); })->whereNotIn('id', $student_ids)->get(); foreach ($students as $student) { $data = ['teacher_id' => NULL, 'student_id' => $student->id, 'classroom_session_id' => $session->id, 'entry_time' => NULL, 'exit_time' => NULL, 'attended_minutes' => 0, 'manual' => 1, 'valid' => 0]; $attendance = ClassroomSessionAttendance::create($data); $attendances->push($attendance); } return $attendances; }