/**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     $this->comment(PHP_EOL . 'modifiyng' . PHP_EOL);
     $sessions = ClassroomSession::select('id', 'teacher_id', 'admin_link', 'subject_subject_id', 'interval_id', 'title', 'wiziq_id', 'duration', 'start_at')->whereDate('start_at', '=', date('Y-m-d'))->with('subject', 'interval', 'teacher')->get();
     foreach ($sessions as $session) {
         try {
             $classroom = WiziqClassroom::build($session->interval->title . " - " . $session->subject->name, new \DateTime($session->start_at))->withDuration($session->duration)->withPresenter($session->teacher->id, $session->teacher->name)->withAttendeeLimit(config("classrooms.attendee_limit"))->withReturnUrl('')->withCreateRecording(true)->withPresenterDefaultControls('audio, video')->withTimeZone("Asia/Muscat")->withStatusPingUrl("https://www.google.com")->withLanguageCultureName("ar-SA");
             $WiziqApi = new WiziqApi();
             $WiziqApi->modify($session->wiziq_id, $classroom);
             $attendees = Attendees::build()->add(9999999999.0, 'النظام', 'ar-SA');
             $response = $WiziqApi->addAttendeesToClass($session->wiziq_id, $attendees);
             $session->admin_link = $response[0]['url'];
             $session->save();
         } catch (\mikemix\Wiziq\Common\Api\Exception\CallException $e) {
             Mail::send('emails.classrooms_modify', ['error' => $e->getMessage(), 'time' => $session->start_at], function ($m) {
                 $m->to('*****@*****.**', 'علي اليزيدي')->to('*****@*****.**', 'محسن بخيش')->subject('حدث مشكل اثناء تعديل الفصول');
             });
             $this->comment(PHP_EOL . $e->getMessage() . " - " . $session->id . ' - ' . $session->start_at . PHP_EOL);
         } catch (\mikemix\Wiziq\Common\Http\Exception\InvalidResponseException $e) {
             Mail::send('emails.classrooms_modify', ['error' => $e->getMessage(), 'time' => $session->start_at], function ($m) {
                 $m->to('*****@*****.**', 'علي اليزيدي')->to('*****@*****.**', 'محسن بخيش')->subject('حدث مشكل اثناء تعديل الفصول');
             });
             $this->comment(PHP_EOL . $e->getMessage() . " - " . $session->id . ' - ' . $session->start_at . PHP_EOL);
         }
     }
     $this->comment(PHP_EOL . 'finished modifiyng' . PHP_EOL);
 }
 private function createClassrooms($interval)
 {
     $classrooms = $interval->classrooms;
     $WiziqApi = new WiziqApi();
     if (App::environment() == 'local') {
         $status_ping_url = 'http://46.40.236.186:9090/DARES/public/classrooms/classrooms/status_ping';
         // $status_ping_url = 'https://el-css.edu.om/admin/public/classrooms/classrooms/status_ping';
     } else {
         $status_ping_url = 'https://google.com';
         // $status_ping_url = 'https://el-css.edu.om/admin/public/classrooms/classrooms/status_ping';
     }
     // Log::info($status_ping_url);
     foreach ($classrooms as $classroom) {
         $error = 0;
         $subject = $classroom->subject;
         $teacher = $classroom->teacher;
         $increment_date = Date::parse($interval->from_date . " " . $classroom->hour);
         while ($increment_date->format("Y-m-d H:i:s") <= $interval->to_date . " 23:59:59") {
             $exists = ClassroomSession::where('start_at', $increment_date->format("Y-m-d H:i:s"))->where('classroom_id', $classroom->id)->count();
             if ($increment_date->dayOfWeek == $classroom->day && $increment_date->isFuture() && !$exists) {
                 try {
                     $wiziqclassroom = WiziqClassroom::build($interval->title . " - " . $subject->name, new DateTime($increment_date->format("Y-m-d H:i:s")))->withPresenter($teacher->id, $teacher->name)->withAttendeeLimit(config("classrooms.attendee_limit"))->withReturnUrl('')->withDuration(60)->withExtendDuration(0)->withStatusPingUrl($status_ping_url)->withTimeZone("Asia/Muscat")->withLanguageCultureName("ar-SA")->withCreateRecording(true);
                     $response = $WiziqApi->create($wiziqclassroom);
                     $data = ['title' => $interval->title, 'wiziq_id' => $response['class_id'], 'interval_id' => $interval->id, 'classroom_id' => $classroom->id, 'subject_subject_id' => $subject->id, 'teacher_id' => $teacher->id, 'start_at' => $increment_date->format("Y-m-d H:i:s"), 'duration' => 60, 'recording_link' => $response['recording_url'], 'presenter_link' => $response['presenter_url']];
                     /** add attendees to virtual classroom */
                     if ($session = ClassroomSession::create($data)) {
                         $error = $this->createStudentsSessions($classroom->students, $session);
                     }
                     //\Log::info($response);
                 } catch (\mikemix\Wiziq\Common\Api\Exception\CallException $e) {
                     // \Log::warning($e->getMessage());
                     $error = 1;
                 } catch (\mikemix\Wiziq\Common\Http\Exception\InvalidResponseException $e) {
                     // \Log::warning($e->getMessage());
                     $error = 1;
                 } catch (\PDOException $e) {
                     $error = 1;
                 }
             }
             $increment_date->add("1 day");
         }
         if ($error == 0) {
             $interval->state = 'done';
             $interval->save();
             event(new IntervalVirtualClassroomsCreated($interval->title));
         }
     }
 }
 public function createVirtualClassroom($session)
 {
     // Log::info("in create virtual classroom");
     $classroom = $session->classroom;
     $teacher = $session->teacher;
     $error = 0;
     $subject = $session->subject;
     if (App::environment() == 'local') {
         $status_ping_url = 'http://46.40.236.186:9090/DARES/public/classrooms/classrooms/status_ping';
     } else {
         $status_ping_url = 'https://google.com';
         // $status_ping_url = 'https://el-css.edu.om/admin/public/classrooms/classrooms/status_ping';
     }
     // \Log::info($status_ping_url);
     $WiziqApi = new WiziqApi();
     try {
         // Log::info("reached try");
         $wiziqclassroom = WiziqClassroom::build($session->title . " - " . $subject->name, new DateTime($session->start_at))->withPresenter($teacher->id, $teacher->name)->withAttendeeLimit(config("classrooms.attendee_limit"))->withReturnUrl('')->withDuration($session->duration)->withExtendDuration(0)->withStatusPingUrl($status_ping_url)->withTimeZone("Asia/Muscat")->withLanguageCultureName("ar-SA")->withCreateRecording(true);
         $response = $WiziqApi->create($wiziqclassroom);
         // Log::info($response);
         $data = ['wiziq_id' => $response['class_id'], 'recording_link' => $response['recording_url'], 'presenter_link' => $response['presenter_url']];
         // Log::info($data);
         /** add attendees to virtual classroom */
         if ($session->fill($data)->save() && $response) {
             $error = $this->createStudentsSessions($classroom->students, $session);
         }
     } catch (\mikemix\Wiziq\Common\Api\Exception\CallException $e) {
         $error = 1;
     } catch (\mikemix\Wiziq\Common\Http\Exception\InvalidResponseException $e) {
         $error = 1;
     } catch (\PDOException $e) {
         $error = 1;
     }
     if ($error == 0) {
         event(new VirtualClassroomsCreated());
     } else {
         $session->wiziq_status = 'error';
         $session->save();
     }
 }
Пример #4
0
 /**
  * {@inheritdoc}
  */
 public function getParams()
 {
     return array_merge(['class_id' => $this->classroomId], $this->classroom->toArray());
 }
Пример #5
0
 /**
  * {@inheritdoc}
  */
 public function getParams()
 {
     return array_filter($this->classroom->toArray());
 }
Пример #6
0
 public function update(ClassroomSession $session, UpdateClassroomSessionRequest $request)
 {
     if ($session->start_at->isPast()) {
         return redirect()->route('classrooms.sessions.index')->with('error', trans('classrooms::sessions.cant_modify_started_sessions'));
     }
     $session->load('subject', 'interval', 'teacher');
     $session->fill($request->only('duration', 'start_at', 'title'));
     $session->save();
     try {
         $classroom = WiziqClassroom::build($session->interval->title . " - " . $session->subject->name, new \DateTime($session->start_at))->withDuration($session->duration)->withPresenter($session->teacher->id, $session->teacher->name)->withAttendeeLimit(config("classrooms.attendee_limit"))->withReturnUrl('')->withCreateRecording(true)->withPresenterDefaultControls('audio, video')->withTimeZone("Asia/Muscat")->withStatusPingUrl("https://google.com")->withLanguageCultureName("ar-SA");
         $WiziqApi = new WiziqApi();
         $response = $WiziqApi->modify($session->wiziq_id, $classroom);
     } catch (mikemix\Wiziq\Common\Api\Exception\CallException $e) {
         die($e->getMessage());
     } catch (mikemix\Wiziq\Common\Http\Exception\InvalidResponseException $e) {
         die($e->getMessage());
     }
     return redirect()->route('classrooms.sessions.index');
 }
Пример #7
0
 public function test(Request $request)
 {
     ClassroomSessionExcuse::truncate();
     ClassroomSessionAttendance::where('student_id', 10001)->update(['valid' => 0]);
     exit;
     $student_id = 4796;
     $order_dir = in_array($request->input('order_dir'), ['ASC', 'DESC']) ? $request->input('order_dir') : 'ASC';
     $exams = Exam::select('exams.type', 'exams.start_at', 'exams.finish_at', 'exams.name', 'exams.id')->join('subject_subjects as subsub', 'subsub.id', '=', 'exams.subject_id')->join('student_subjects as stusub', function ($j) use($student_id) {
         $j->on('stusub.subject_id', '=', 'subsub.id')->where('stusub.student_id', '=', $student_id)->where('stusub.state', '=', 'study');
     })->where(function ($query) use($request, $student_id) {
         $query->orWhereIn('exams.type', ['midterm', 'remidterm'])->orWhereRaw('exams.id IN (SELECT ce.exam_id FROM classrooms_exam as ce
                             JOIN classrooms as c ON c.id = ce.classroom_id
                             JOIN classroom_students as cs ON cs.classroom_id = c.id
                                 AND cs.student_id = ' . $student_id . '
                             WHERE exam_id = exams.id GROUP BY ce.id)');
         if ($request->has('finalExam')) {
             $query->orWhereIn('exams.type', ['final', 'summer', 'refinal']);
         }
     })->where('exams.semester_id', semester()->id)->where('finish_at', '>=', date('Y-m-d H:i:s'))->groupBy('exams.id')->orderBy('exams.start_at', $order_dir)->with(['questions' => function ($w) {
         $w->select('questionbank_questions.id', 'questionbank_questions.question', 'questionbank_questions.type');
         if (false) {
             $w->orderByRaw('RAND()');
         } else {
             $w->orderBy('questionbank_questions.type', 'DESC');
         }
     }, 'questions.choices' => function ($w) {
         $w->select('questionbank_choices.id', 'questionbank_choices.question_id', 'questionbank_choices.choice', 'questionbank_choices.istrue');
     }])->get();
     return $exams;
     exit;
     $specialities = Specialty::selectRaw('asp.id, asp.name, asp.short_description, asp.description, GROUP_CONCAT(adp.subject_ids) as subject_ids, COUNT(adt.id) as terms, COUNT(DISTINCT ady.id) as years')->leftJoin('academystructure_departments as adp', 'adp.spec_id', '=', 'asp.id')->leftJoin('academystructure_terms as adt', 'adt.id', '=', 'adp.term_id')->leftJoin('academystructure_years as ady', 'ady.id', '=', 'adt.year_id')->from('academystructure_specialties as asp')->groupBy('asp.id')->with('departments')->get();
     foreach ($specialities as $specialty) {
         $subject_ids = explode(",", preg_replace(['/\\[/', "/\\]/"], "", $specialty->subject_ids));
         $specialty->hours = Subject::whereIn('id', $subject_ids)->sum('hour');
         foreach ($specialty->departments as $department) {
             $subject_ids = explode(",", preg_replace(['/\\[/', "/\\]/", '/"/', "/'/"], "", $department->subject_ids));
             // var_dump($subject_ids);
             $department->subjects = Subject::whereIn('id', $subject_ids)->get();
         }
     }
     $specialities->makeHidden(['subject_ids']);
     return $specialities;
     exit;
     $status_ping_url = \App::environment('local') ? 'http://46.40.236.186:9090/DARES/public/classrooms/classrooms/status_ping' : route('classrooms.sessions.status-ping');
     $WiziqApi = new WiziqApi();
     try {
         $wiziqclassroom = WiziqClassroom::build("test", new DateTime("2016-08-10 23:55:00"))->withPresenter(20, "test teacher")->withAttendeeLimit(config("classrooms.attendee_limit"))->withReturnUrl('https://el-css.edu.om')->withDuration(10)->withExtendDuration(0)->withStatusPingUrl($status_ping_url)->withTimeZone("Asia/Muscat")->withLanguageCultureName("ar-SA")->withCreateRecording(true);
         $response = $WiziqApi->create($wiziqclassroom);
         \Log::info($response);
         exit(var_dump($response));
         $data = ['wiziq_id' => $response['class_id'], 'recording_link' => $response['recording_url'], 'presenter_link' => $response['presenter_url']];
         /** add attendees to virtual classroom */
         Log::info($response);
         if ($session->fill($data)->save() && $response) {
             $error = $this->createStudentsSessions($classroom->students, $session);
         }
     } catch (\mikemix\Wiziq\Common\Api\Exception\CallException $e) {
         $error = 1;
     } catch (\mikemix\Wiziq\Common\Http\Exception\InvalidResponseException $e) {
         $error = 1;
     } catch (\PDOException $e) {
         $error = 1;
     }
     if ($error == 0) {
         event(new VirtualClassroomsCreated());
     } else {
         $session->wiziq_status = 'error';
         $session->save();
     }
 }