private function createFromExcel()
 {
     $semester_id = semester()->id;
     $results = Excel::load($this->filename)->get()->all();
     // dd(get_class_methods($results));
     $subjects_codes = [];
     $teachers_usernames = [];
     $classrooms_codes = [];
     foreach ($results as $sheet) {
         $item = $sheet->all();
         if (empty($item[1]) || empty($item[2]) || empty($item[3])) {
             continue;
         }
         $teachers_usernames[] = $item[2];
         $subjects_codes[] = $item[1];
         $classrooms_codes[] = $item[3];
     }
     $teachers = Teacher::whereIn('username', $teachers_usernames)->pluck('id', 'username')->toArray();
     $subjects = Subject::whereIn('code', $subjects_codes)->pluck('id', 'code')->toArray();
     $classrooms = Classroom::whereIn('code', $classrooms_codes)->inCurrentSemester()->pluck('id', 'code')->toArray();
     $new_classrooms = [];
     foreach ($results as $sheet) {
         $item = $sheet->all();
         if (empty($item[1]) || empty($item[2]) || empty($item[3])) {
             continue;
         }
         if (!isset($classrooms[$item[3]]) && isset($teachers[$item[2]]) && isset($subjects[$item[1]]) && in_array($item[5], ['m', 'f', 'b'])) {
             $new_classrooms[] = ['code' => $item[3], 'day' => $item[4] - 1, 'gender' => $item[5], 'teacher_id' => $teachers[$item[2]], 'subject_subject_id' => $subjects[$item[1]], 'semester_id' => $semester_id, 'attendees_limit' => 100, 'created_at' => new DateTime(), 'updated_at' => new DateTime()];
         }
     }
     if (!empty($new_classrooms)) {
         Classroom::insert($new_classrooms);
     }
     event(new CreateClassroomsFromExcelFinished());
 }
Ejemplo n.º 2
0
 public function active()
 {
     $subjects = [];
     $fields = [];
     if (FinancialException::whereSemesterId(semester()->id)->whereStudentId($this->student->id)->whereActive(1)->count()) {
         return response()->json(false, 200, [], JSON_NUMERIC_CHECK);
     }
     $this->student->load('registration', 'registration.contactcountry', 'registration.contactcity');
     $subjects = Subject::join('student_subjects as ss', function ($j) {
         $j->on('ss.subject_id', '=', 'subject_subjects.id')->where('student_id', '=', $this->student->id)->where('state', '=', 'study')->where('semester_id', '=', $this->semester->id)->where('payed', '=', 0);
     })->get()->toArray();
     // if() {
     $study_fee = FinancialInvoiceItem::where('slug', 'study_fee')->first();
     $study_fee = $study_fee ? $study_fee->amount : 0;
     // } else {
     // $study_fee = 6;
     // }
     $total_fee = 0;
     foreach ($subjects as &$subject) {
         $subject['fee'] = !$subject['is_quran'] ? $subject['hour'] * $study_fee : $subject['hour'] * 7.5;
         $total_fee += $subject['fee'];
     }
     if ($total_fee > 0) {
         if (!$this->student->registration) {
             return response()->json(false, 200, [], JSON_NUMERIC_CHECK);
         }
         $data = ['key' => 'student', 'value' => $this->student->username, 'transaction_id' => time(), 'amount' => $total_fee, 'bill_to_forename' => $this->student->registration->first_name, 'bill_to_surname' => $this->student->registration->last_name, 'bill_to_email' => $this->student->registration->contact_email, 'bill_to_address_line1' => $this->student->registration->adress, 'bill_to_phone' => $this->student->registration->contact_mobile, 'bill_to_address_city' => $this->student->registration->contactcity ? $this->student->registration->contactcity->name : '', 'bill_to_address_country' => 'OM'];
         $payment = new PaymentGateway($data);
         $fields = $payment->getData();
     }
     if (empty($total_fee)) {
         return response()->json(false, 200, [], JSON_NUMERIC_CHECK);
     }
     return response()->json(compact('subjects', 'fields'), 200, [], JSON_NUMERIC_CHECK);
 }
Ejemplo n.º 3
0
 /**
  * Show the form for creating a new resource.
  * @return Response
  */
 public function create()
 {
     $students = QuranTimeExtend::with('student', 'semester', 'subject')->where('semester_id', semester()->id)->paginate(20);
     $subjects = Subject::where('is_quran', 1)->pluck('name', 'id')->toArray();
     //$name = $students->$student;
     return view('quran::time_extend.create', compact('students', 'subjects'));
 }
Ejemplo n.º 4
0
 public function index(Request $request)
 {
     $student_id = $this->student->id;
     $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', 'activity'])->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') == 'true') {
             $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 ($this->randomize_questions) {
             $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 response()->json(compact('exams'), 200, [], JSON_NUMERIC_CHECK);
 }
Ejemplo n.º 5
0
 /**
  * Display a listing of the resource.
  * @return Response
  */
 public function index(Request $request)
 {
     $excuses = ExamExcuse::where('semester_id', semester()->id)->with('student', 'subject', 'exam');
     if (request('subject_id')) {
         $subject_id = request('subject_id');
         $excuses->whereHas('exam.subject', function ($q) use($subject_id) {
             $q->where('subject_subjects.id', $subject_id);
         });
     }
     if (request('exam_year_term')) {
         $excuses->whereIn('subject_id', explode(',', request('exam_year_term')));
     }
     $per_page = request('per_page') ? request('per_page') : 50;
     $excuses = $excuses->paginate($per_page);
     $excuses->appends($request->except("page"));
     $subjects = Subject::lists('name', 'id')->toArray();
     $year_term = Year::join('academystructure_terms', 'academystructure_years.id', '=', 'academystructure_terms.year_id')->join('academystructure_departments', 'academystructure_terms.id', '=', 'academystructure_departments.term_id')->select(\DB::raw('CONCAT(academystructure_years.name, "-", academystructure_terms.name) as name,
                                     GROUP_CONCAT(DISTINCT(academystructure_departments.subject_ids)) as sid'))->groupBy('academystructure_terms.name', 'academystructure_years.name')->get()->toArray();
     $year_term_options;
     foreach ($year_term as $key => &$aa) {
         $a = implode(',', array_unique(array_merge(json_decode(str_replace('],[', ',', $aa['sid']), TRUE))));
         $year_term_options[$a] = $aa['name'];
     }
     return view('exams::excuses.index', compact('excuses', 'subjects', 'year_term_options'));
 }
Ejemplo n.º 6
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     $where = ['student_id' => student()->id, 'semester_id' => semester()->id, 'subject_id' => $request->subject_id, 'remaining' => 0];
     if (QuranRecording::where($where)->count()) {
         return redirect()->route('students.profile.subjects.index')->with('info', 'لقد استنفذت تسجيلات التلاوة المتاحة لك لهذه المادة.');
     }
     return $next($request);
 }
Ejemplo n.º 7
0
 public function scopeStudentNotAttended($query, $student_id)
 {
     $query->join('subject_subjects as ss', 'ss.id', '=', 'exams.subject_id')->join('student_subjects as stusub', function ($j) use($student_id) {
         $j->on('stusub.subject_id', '=', 'ss.id')->where('stusub.student_id', '=', $student_id)->where('stusub.semester_id', '=', semester()->id)->where('stusub.state', '=', 'study');
     })->leftJoin('exam_results as er', function ($j) use($student_id) {
         $j->on('er.exam_id', '=', $this->getTable() . '.id')->where('er.student_id', '=', $student_id);
     })->whereNull('er.id')->groupBy('exams.id');
 }
Ejemplo n.º 8
0
 public function index()
 {
     $user = Auth::guard('api_student')->user();
     $lessons = Lesson::select('sl.id', 'sl.name', 'sl.subject_subject_id', 'sl.lesson_order', 'sl.type', 'sl.state')->join('subject_subjects as ss', 'ss.id', '=', 'sl.subject_subject_id')->join('student_subjects as stusub', function ($j) use($user) {
         $j->on('stusub.subject_id', '=', 'ss.id')->where('student_id', '=', $user->id)->where('semester_id', '=', semester()->id);
     })->from('subject_lessons as sl')->groupBy('sl.id')->get();
     return response()->json($lessons, 200, [], JSON_NUMERIC_CHECK);
 }
Ejemplo n.º 9
0
 public function chooseClassroom(ChooseClassroomRequest $request)
 {
     $input = $request->all();
     $student = student();
     $student->classrooms()->attach([$input['classroom_id'] => ['semester_id' => semester()->id]]);
     event(new StudentChoseClassroom(Classroom::find($input['classroom_id']), $student, new User()));
     return redirect()->route('students.profile.classrooms.index');
 }
Ejemplo n.º 10
0
 /**
  * Store a newly created resource in storage.
  * @param  Request $request
  * @return Response
  */
 public function store(Request $request, FinancialException $exceptions)
 {
     $exceptions->fill($request->all());
     $exceptions->active = $request->input('active');
     $exceptions->semester_id = semester()->id;
     $exceptions->save();
     $exceptions = FinancialException::with('students')->paginate(20);
     return redirect()->route('financials.exceptions.index');
 }
Ejemplo n.º 11
0
 /**
  * Boot the application events.
  *
  * @return void
  */
 public function boot()
 {
     $this->registerTranslations();
     $this->registerConfig();
     $this->registerViews();
     FinancialInvoice::creating(function ($invoice) {
         $invoice->semester_id = empty($invoice->semester_id) ? semester()->id : $invoice->semester_id;
     });
 }
Ejemplo n.º 12
0
 /**
  * Boot the application events.
  *
  * @return void
  */
 public function boot()
 {
     $this->registerTranslations();
     $this->registerConfig();
     $this->registerViews();
     StudentGrade::creating(function ($grade) {
         $grade->semester_id = semester()->id;
     });
     Relation::morphMap(['students' => \Modules\Students\Entities\Student::class]);
 }
Ejemplo n.º 13
0
 public function delete(Request $request)
 {
     $input = $request->all();
     $this->student->classrooms()->detach($input['classroom_id']);
     event(new StudentExitClassroom(Classroom::find($input['classroom_id']), $this->student, new User()));
     $classroom = Classroom::select('cs.student_id as chosen', 'classrooms.attendees_limit', 'classrooms.name', 'classrooms.code', 'classrooms.id', 'classrooms.teacher_id', 'classrooms.subject_subject_id', 'classrooms.day', 'classrooms.hour')->join('subject_subjects as subsub', 'subsub.id', '=', 'classrooms.subject_subject_id')->join('student_subjects as stusub', function ($join) {
         $join->on('stusub.subject_id', '=', 'subsub.id')->where('stusub.student_id', '=', $this->student->id);
     })->leftJoin('classroom_students as cs', function ($j) {
         $j->on('cs.classroom_id', '=', 'classrooms.id')->where('cs.student_id', '=', $this->student->id)->where('cs.semester_id', '=', semester()->id);
     })->whereIn('classrooms.gender', [$this->student->gender, 'b'])->with('subject')->withCount('students')->find($input['classroom_id']);
     return response()->json($classroom, 200, [], JSON_NUMERIC_CHECK);
 }
Ejemplo n.º 14
0
 /**
  * Execute the job.
  *
  * @return void
  */
 public function handle(Mailer $mailer)
 {
     $semester_id = semester()->id;
     $students = Student::whereIn('students.id', $this->students_ids)->select('students.id', 'students.registration_id', 'students.name', 'students.email', 'students.mobile', 'registrations.contact_email')->with('registration')->leftJoin('registrations', 'registrations.id', '=', 'students.registration_id')->groupBy('students.id')->get();
     $created_at = new DateTime();
     // $students = $this->students;
     $students_messages = [];
     foreach ($students as $student) {
         $student_message = [];
         $student_message['created_at'] = $created_at;
         $student_message['updated_at'] = $created_at;
         $student_message['sender_id'] = $this->sender_id;
         $student_message['semester_id'] = $semester_id;
         $student_message['email'] = $this->email;
         $student_message['sms'] = $this->sms;
         $student_message['student_id'] = $student->id;
         $student_message['email_sent'] = 0;
         $student_message['sms_sent'] = 0;
         if (!empty($this->email)) {
             try {
                 $mailer->send('students::emails.message', ['content' => $this->email], function ($m) use($student) {
                     if (!empty($student->registration) && !empty($student->registration->contact_email)) {
                         if (filter_var($student->registration->contact_email, FILTER_VALIDATE_EMAIL)) {
                             $m->cc([$student->registration->contact_email]);
                         }
                     }
                     $m->to($student->email, $student->name)->subject("مركز التعليم عن بعد");
                 });
                 $student_message['email_sent'] = 1;
             } catch (\Swift_RfcComplianceException $e) {
             }
         }
         $mobile_number = $student->mobile;
         if (substr($mobile_number, 0, 3) != 968 && substr($mobile_number, 0, 5) != '00968') {
             $mobile_number = '968' . $mobile_number;
         }
         if (substr($mobile_number, 0, 5) == '00968') {
             $mobile_number = str_replace('00968', '968', $mobile_number);
         }
         // \Log::info($mobile_number);
         if (!empty(trim($this->sms)) && strlen($mobile_number) == 11) {
             $sms = new SmsGateway($this->sms, [$mobile_number]);
             $result = $sms->send();
             if ($result == true or $result->getPushMessageResult()->PushMessageResult == 1) {
                 $student_message['sms_sent'] = 1;
             }
         }
         $students_messages[] = $student_message;
         // $message->save();
     }
     DB::table('student_messages')->insert($students_messages);
     event(new StudentsMessagesQueueFinished());
 }
Ejemplo n.º 15
0
 /**
  * Execute the job.
  *
  * @return void
  */
 public function handle()
 {
     $student = Student::find($this->student_id);
     $currentSemester = semester();
     if ($student) {
         $history = StudentHistory::where('academycycle_semester_id', $currentSemester->id)->where('student_id', $student->id)->first();
         if ($history) {
             $history->update(['state' => 'fired', 'study_state' => 'stop']);
         }
         StudentSubject::where('semester_id', $currentSemester->id)->where('student_id', $student->id)->update(['state' => 'fail']);
         $student->update(['state' => 'fired', 'study_state' => 'stop']);
     }
 }
 /**
  * Handle the event.
  *
  * @param  StudentChoseClassroom  $event
  * @return void
  */
 public function handle(StudentExitClassroom $event)
 {
     $classroom = $event->classroom;
     $student = $event->student;
     $user = $event->user;
     $notes = $event->notes;
     if (empty($user)) {
         $description = 'قام الطالب ' . $student->code . ' بالغاء اختيار الشعبة ' . $classroom->code;
     } else {
         $description = 'قام ' . $user->name . ' بحذف الطالب ' . $student->code . ' من الشعبة ' . $classroom->code;
     }
     $data = ['student_id' => $student->id, 'semester_id' => semester()->id, 'description' => $description, 'notes' => $notes, 'user_id' => !empty($user) ? $user->id : NULL];
     $history = StudentClassroomHistory::create($data);
 }
Ejemplo n.º 17
0
 /**
  * Handle the event.
  *
  * @param  UserAuthenticated  $event
  * @return void
  */
 public function handle(DelayOrderAccepted $event)
 {
     $delay_order = $event->order;
     //refund debit
     //create credit invoice
     if ($delay_order->refund_state > 0) {
         $moneyback_item = FinancialInvoiceItem::where('slug', 'moneyback_fee')->where('state', 'نشط')->first();
         $study_item = FinancialInvoice::whereHas('item', function ($q) {
             $q->where('slug', 'study_fee');
         })->where('semester_id', semester()->id)->where('type', 'debit')->first();
         if ($study_item) {
             $invoiceData = ['ref_key' => 'order_delays', 'ref_value' => $delay_order->id, 'student_id' => $delay_order->student_id, 'amount' => $study_item->amount * $delay_order->refund_state / 100, 'type' => 'credit', 'pay_type' => 'system', 'item_id' => $moneyback_item->id, 'semester_id' => $delay_order->semester_id, 'note' => 'رسوم مستحقة من التأجيل'];
             FinancialInvoice::create($invoiceData);
         }
     }
 }
Ejemplo n.º 18
0
 /**
  * Display a listing of the resource.student_subjects
  * @return Response
  */
 public function index(Request $request)
 {
     $statistics = StudentGrade::where('student_grades.semester_id', semester()->id)->select('subject_id', 'student_id', DB::raw('SUM(value) as sgrade'))->with(['subject', 'student' => function ($query) {
         $query->whereHas('subjects', function ($q) {
             $q->where('semester_id', semester()->id);
             $q->where('state', 'study');
         });
     }])->groupBy('student_id', 'subject_id')->orderBy('student_id');
     if (request('mark_from')) {
         $statistics->having('sgrade', '>=', request('mark_from'));
     }
     if (request('mark_to')) {
         $statistics->having('sgrade', '<', request('mark_to'));
     }
     $statistics = $statistics->get()->groupBy('student_id')->get();
     // dd($statistics);
     return view('exams::reports.index', compact('statistics'));
 }
Ejemplo n.º 19
0
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     $this->comment(PHP_EOL . 'adding' . PHP_EOL);
     $sessions = ClassroomSession::select('classroom_sessions.wiziq_id', 'classroom_sessions.id', 'classroom_sessions.classroom_id')->whereDate('classroom_sessions.start_at', '>', date('Y-m-d'))->with(['classroom' => function ($query) {
         return $query->select('classrooms.id');
     }, 'classroom.students' => function ($query) {
         return $query->select('students.id', 'students.name');
     }, 'studentsSessions' => function ($query) {
         return $query->select('student_id', 'classroom_session_id');
     }])->get();
     foreach ($sessions as $session) {
         $classroomId = $session->wiziq_id;
         $error = 0;
         $WiziqApi = new WiziqApi();
         // var_dump($session->classroom->students->count());
         foreach ($session->classroom->students as $student) {
             $exist = $session->studentsSessions->filter(function ($value) use($student) {
                 return $value->student_id == $student->id;
             });
             if ($exist->count()) {
                 continue;
             }
             $this->comment(PHP_EOL . ' not exist ' . PHP_EOL);
             try {
                 $attendees = Attendees::build()->add($student->id, $student->name, 'ar-SA');
                 // add more if needed
                 $response = $WiziqApi->addAttendeesToClass($classroomId, $attendees);
                 $data = ['student_link' => $response[0]['url'], 'attendee_id' => $response[0]['id'], 'classroom_session_id' => $session->id, 'student_id' => $student->id, 'semester_id' => semester()->id];
                 StudentClassroomSession::create($data);
             } catch (\mikemix\Wiziq\Common\Api\Exception\CallException $e) {
                 $this->comment(PHP_EOL . ' call exception ' . PHP_EOL);
                 $error = 1;
             } catch (\mikemix\Wiziq\Common\Http\Exception\InvalidResponseException $e) {
                 $this->comment(PHP_EOL . ' invalid response exception ' . PHP_EOL);
                 $error = 1;
             } catch (\ErrorException $e) {
                 $this->comment(PHP_EOL . ' error exception ' . PHP_EOL);
                 $error = 1;
             }
         }
     }
     $this->comment(PHP_EOL . 'added' . PHP_EOL);
 }
Ejemplo n.º 20
0
 /**
 * @desc get all question per subject
 * @parm $id int = subject id
 * @return list of q view
 **/
 public function question($subjectid = 0, Request $request)
 {
     $exams = Exam::where('subject_id', $subjectid)->where('semester_id', semester()->id)->pluck('name', 'id')->toArray();
     $questions = Question::select('exam_questions.id as is_attached', 'question', 'questionbank_questions.type', 'difficulty', 'level', 'questionbank_questions.id', 'subject_lessons.name as lesson_name')->join('subject_lessons', 'subject_lessons.id', '=', 'questionbank_questions.lesson_id')->join('subject_subjects', 'subject_subjects.id', '=', 'subject_lessons.subject_subject_id')->leftJoin('exam_questions', 'exam_questions.question_id', '=', 'questionbank_questions.id')->where('subject_subjects.id', $subjectid)->orderBy('id', 'desc');
     $per_page = request('per_page') ? request('per_page') : 10;
     if ($request->has('from_date')) {
         $questions->whereDate('questionbank_questions.created_at', '>=', $request->input('from_date'));
     }
     if ($request->has('to_date')) {
         $questions->whereDate('questionbank_questions.created_at', '<=', $request->input('to_date'));
     }
     if ($request->has('question')) {
         $questions->where('questionbank_questions.question', 'LIKE', '%' . $request->input('question') . '%');
     }
     $questions = $questions->paginate($per_page);
     $questions->appends($request->except("page"));
     $Subject = Subject::findOrFail($subjectid);
     return view('questionbank::subject.question', compact('questions', 'subjectid', 'Subject', 'exams'));
 }
Ejemplo n.º 21
0
 /**
  * Execute the job.
  *
  * @return void
  */
 public function handle()
 {
     $student = Student::find($this->student_id);
     if ($student) {
         $failed_subjects = [];
         $success_subjects = [];
         $semester = semester();
         $subjects = StudentSubject::selectRaw("subsub.id as subject_id,SUM(stugr.value) AS subject_points,student_subjects.state as subject_state,subsub.name AS subject_name, subsub.hour AS subject_hours")->join('subject_subjects AS subsub', function ($join) {
             $join->on('subsub.id', '=', 'student_subjects.subject_id');
         })->where('student_subjects.student_id', $student->id)->leftJoin('student_grades AS stugr', function ($join) use($student, $semester) {
             $join->on('stugr.subject_id', '=', 'subsub.id')->where('stugr.semester_id', '=', $semester->id)->where('stugr.student_id', '=', $student->id);
         })->whereIn('state', ['study', 'success', 'fail'])->where('student_subjects.semester_id', '=', $semester->id)->where('student_subjects.student_id', $student->id)->groupBy('subsub.id')->get();
         $subjects->each(function ($subject) use(&$failed_subjects, $success_subjects) {
             $subject->details = grade_details($subject->subject_points, $subject->subject_hours);
             if ((double) $subject->subject_points < 50) {
                 $failed_subjects[] = $subject->subject_id;
             } else {
                 $success_subjects[] = $subject->subject_id;
             }
         });
         $semester->load('year');
         $currentYear = $semester->year;
         $nextYear = AcademycycleYear::where('start_at', '>', $currentYear->start_at)->first();
         $repeatSemester = Semester::where('order', $semester->order)->where('academycycle_year_id', $nextYear->id)->first();
         $currentHistory = StudentHistory::where('student_id', $student->id)->where('academycycle_semester_id', $semester->id)->first();
         $repeatSubjects = [];
         foreach ($failed_subjects as $subject_id) {
             $repeatSubjects[$subject_id] = ['semester_id' => $repeatSemester->id, 'academystructure_department_id' => $currentHistory->academystructure_department_id, 'state' => 'study'];
         }
         $student->subjects()->attach($repeatSubjects);
         StudentSubject::where('semester_id', $semester->id)->where('student_id', $student->id)->whereIn('subject_id', $success_subjects)->update(['state' => 'success']);
         StudentSubject::where('semester_id', $semester->id)->where('student_id', $student->id)->whereIn('subject_id', $failed_subjects)->update(['state' => 'fail']);
         $currentHistory->study_state = 'repeat';
         $currentHistory->save();
         $repeatHistory = $currentHistory->replicate();
         $repeatHistory->study_state = 'active';
         $repeatHistory->academycycle_semester_id = $repeatSemester->id;
         $repeatHistory->save();
         $student->study_state = 'repeat';
         $student->save();
     }
 }
Ejemplo n.º 22
0
 public function store(CreateRecordingRequest $request)
 {
     $data = [];
     $data['subject_id'] = $request->input('subject_id');
     $data['semester_id'] = semester()->id;
     $data['student_id'] = student()->id;
     $recording = QuranRecording::firstOrCreate($data);
     $videos = empty($recording->videos) ? [] : unserialize($recording->videos);
     if (!empty($recording->quran_video)) {
         array_push($videos, $recording->quran_video);
     }
     $recording->videos = serialize($videos);
     $recording->fill($request->only('page', 'quran_video'));
     $recording->save();
     $recording->decrement('remaining');
     if ($request->ajax()) {
         return response()->json(true);
     }
     return redirect()->route('students.profile.quran.index');
 }
Ejemplo n.º 23
0
 public function __construct()
 {
     $this->student = Auth::guard('api_student')->user();
     // if ($this->student) {
     // $this->student->load('joyrides');
     // }
     if ($this->student) {
         $this->semester = Semester::select('academycycle_semesters.id', 'academycycle_semesters.academycycle_year_id as year_id', 'academycycle_semesters.start_at', 'academycycle_semesters.finish_at', 'academycycle_semesters.name', 'academycycle_semesters.order')->join('student_histories as sh', function ($j) {
             $j->on('sh.academycycle_semester_id', '=', 'academycycle_semesters.id')->where('sh.student_id', '=', $this->student->id);
         })->where(function ($query) {
             $query->orWhere('academycycle_semester_id', semester()->id);
             $query->orWhere('academycycle_semester_id', '>', semester()->id);
         })->orderBy('academycycle_semesters.id', 'ASC')->first();
         if (!$this->semester) {
             $this->semester = semester();
             $this->semester->year_id = $this->semester->academycycle_year_id;
         }
         // Cache::put('student_'.$this->student->id.'_api_semester', $this->semester, 300);
         // Cache::put('student_'.$this->student->id.'_api_student', $this->student, 300);
     }
 }
Ejemplo n.º 24
0
 /**
  * Handle the event.
  *
  * @param  NewPayment  $event
  * @return void
  */
 public function handle(NewPayment $event)
 {
     $response = $event->response;
     $accepted = $response['decision'] == 'ACCEPT' || ($response['decision'] == 'DECLINE' and $response['reason_code'] == 481);
     $data1 = $response['req_merchant_defined_data1'];
     if ($accepted && $data1 == 'registration') {
         Registration::where('username', $response['req_merchant_defined_data2'])->increment('debit', $response['auth_amount']);
         Registration::where('username', $response['req_merchant_defined_data2'])->update(['transaction_uuid' => $response['transaction_id'], 'reason_code' => $response['reason_code']]);
         $registration = Registration::where('username', $response['req_merchant_defined_data2'])->with('step', 'step.children')->first();
         if ($step = $registration->step and !$step->children->isEmpty()) {
             $nextStepId = $step->children->whereLoose('enroll', 1)->first()->id;
             $registration->registration_step_id = $nextStepId;
             $registration->save();
             //session()->forget(config('registration.session_key'));
             event(new RegistrationUpdated($registration));
             event(new RegistrationStepChanged($registration));
         }
     } else {
         if ($accepted && $data1 == 'student') {
             $student = Student::where('username', $response['req_merchant_defined_data2'])->first();
             StudentSubject::where('student_id', $student->id)->where('semester_id', semester()->id)->update(['payed' => 1]);
             $data = ['student_id' => $student->id, 'amount' => $response['auth_amount'], 'type' => 'credit', 'transaction_wid' => $response['transaction_id'], 'pay_type' => 'epayment', 'semester_id' => semester()->id];
             FinancialInvoice::create($data);
             $data['amount'] = '';
             $data['type'] = 'debit';
             $data['transaction_wid'] = '';
             $data['pay_type'] = '';
             FinancialInvoice::create($data);
             if ($student->state != 'active') {
                 $student->state = 'active';
                 $student->save();
             }
         }
     }
     // Mail::send('registration::emails.new_payment' ,compact('response'), function ($message) {
     //         $message->to('*****@*****.**')
     //                 ->subject('new payment '.date('Y-m-d H:i:s'));
     // });
 }
Ejemplo n.º 25
0
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request  $request
  * @param  \Closure  $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
     if (student()) {
         $menu = Menu::make('StudentSidebarMenu', function ($menu) {
         });
         $menu->add('الرئيسية', ['route' => 'students.profile.index'])->data('order', 1)->prepend('<i class="fa fa-home"></i>');
         $events = SemesterEvent::classroom()->count();
         if ($events) {
             $menu->add(trans(trans('students::profile.classrooms.choose_sessions_classrooms')), ['route' => 'students.profile.classrooms.index'])->prepend('<i class="fa fa-bell animated infinite swing"></i>')->data('order', 1);
         }
         $centers = ExamCenterPeriod::where('start_at', '<', date('Y-m-d H:i:s'))->where('finish_at', '>', date('Y-m-d H:i:s'))->where('semester_id', semester()->id)->count();
         if ($centers) {
             $menu->add(trans(trans('students::profile.exams.choose_exam_center')), ['route' => 'students.profile.centers.index'])->prepend('<i class="fa fa-bell animated infinite swing"></i>')->data('order', 2);
         }
         $menu->add(trans('students::profile.subjects.header'), ['route' => 'students.profile.subjects.index'])->data('order', 10)->prepend('<i class="fa fa-briefcase"></i>');
         $menu->add(trans('students::profile.sessions.header'), ['route' => 'students.profile.sessions.index'])->data('order', 20)->prepend('<i class="fa fa-video-camera"></i>');
         $menu->add(trans('students::profile.tickets.header'), ['route' => 'students.profile.tickets.index'])->data('order', 30)->prepend('<i class="fa fa-comment"></i>');
         $menu->add(trans('orders::order.menu'), ['route' => 'orders.index'])->prepend('<i class="fa fa-pencil-square-o"></i>');
         $menu->add(trans('الأسئلة الشائعة'), ['route' => 'students.faq.index'])->data('order', 40)->prepend('<i class="fa fa-briefcase"></i>');
     }
     return $next($request);
 }
Ejemplo n.º 26
0
 public function store(Request $request)
 {
     $filter = ['semester_id' => $this->semester->id, 'student_id' => $this->student->id, 'subject_id' => $request->input('subject_id')];
     $recording = QuranRecording::firstOrCreate($filter);
     $extend = QuranTimeExtend::where($filter)->first();
     if ($extend) {
         $extend->decrement('maximum_recordings');
     }
     $videos = empty($recording->videos) ? [] : unserialize($recording->videos);
     if (!empty($recording->quran_video)) {
         array_push($videos, $recording->quran_video);
     }
     $recording->videos = serialize($videos);
     $recording->quran_video = $request->input('quran_video');
     $recording->page = $request->input('page');
     $recording->save();
     $recording->load('grade');
     $recording->decrement('remaining');
     // $recording->remaining = $recording->remaining - 1;
     $recording->excuse = OrderQuranExcuse::where(['semester_id' => semester()->id, 'student_id' => $recording->student_id, 'subject_id' => $recording->subject_id])->first();
     return response()->json($recording, 200, [], JSON_NUMERIC_CHECK);
 }
Ejemplo n.º 27
0
 public function index(Request $request)
 {
     $invoices = FinancialInvoice::with('student')->where('type', 'credit')->orderBy('id', 'desc');
     if ($request->has('transaction_wid')) {
         $invoices->where('transaction_wid', 'LIKE', "%" . $request->input('transaction_wid') . "%");
     }
     if ($request->has('student_id')) {
         $invoices->where('student_id', $request->input('student_id'));
     }
     $filter_semester_id = 0;
     if (request('semester_id')) {
         $filter_semester_id = request('semester_id');
     } else {
         $filter_semester_id = semester()->id;
     }
     if ($request->has('semester_id')) {
         $invoices->where('semester_id', $filter_semester_id);
     }
     $semesters = Semester::select(\DB::raw('CONCAT(academycycle_semesters.name , "-", academycycle_years.name) as name , academycycle_semesters.id as id'))->join('academycycle_years', 'academycycle_years.id', '=', 'academycycle_semesters.academycycle_year_id')->pluck('name', 'id')->toArray();
     $per_page = request('per_page') ? request('per_page') : 50;
     $invoices = $invoices->paginate($per_page);
     $invoices->appends($request->except("page"));
     return view('financials::invoices.index', compact('invoices', 'semesters'));
 }
Ejemplo n.º 28
0
                      <ul class="dropdown-menu slide" role="menu" style="right:-15px">
                        <?php 
include "resources/dropdown-menu-items.php";
?>
                      </ul>
                      -->

                    </div>
                    <?php 
if (isset($_SESSION['kiosk']['student_id'])) {
    ?>
                      <?php 
    $student_id = $_SESSION['kiosk']['student_id'];
    $query_student = mysql_query("SELECT * FROM student_t WHERE student_id='{$student_id}'") or die(trigger_error(mysql_error()));
    $row_student = mysql_fetch_assoc($query_student);
    $sem_id = semester();
    $query_registration = mysql_query("SELECT * FROM student_registration_t WHERE student_id='{$student_id}' AND sem_id='{$sem_id}' ") or die(trigger_error(mysql_error()));
    if (mysql_num_rows($query_registration) > 0) {
        // //$count_registration = ($count_registration<1)? 1:$count_registration;
        // $query_registration = mysql_query("SELECT * FROM student_registration_t WHERE student_id='{$student_id}' ORDER BY reg_date ASC LIMIT $count_registration,1") or die(trigger_error(mysql_error()));
        $row_registration = mysql_fetch_assoc($query_registration);
        $year_level = $row_registration['year_level'];
        $course_code = $row_registration['course_code'];
        //$sem_id        = $row_registration['sem_id'];
        $query_course = mysql_query("SELECT * FROM course_t WHERE course_code='{$course_code}'") or die(mysql_error());
        $row_course = mysql_fetch_assoc($query_course);
        $course_title = $row_course['course_title'];
        $query_sem = mysql_query("SELECT * FROM semester_t WHERE sem_id='{$sem_id}'") or die(mysql_error());
        $row_sem = mysql_fetch_assoc($query_sem);
        $sem_no = $row_sem['sem_no'];
        $ay_id = $row_sem['ay_no'];
Ejemplo n.º 29
0
 public function correctexam()
 {
     # code...
     $semester_id = semester()->id;
     $exam_type = 'midterm';
     $results = DB::select("select sub.id as sub_id , sub.name as sub_name, classrooms.name as classroom_name , ex.start_at , ex.finish_at , t.name as teacher_name , classrooms.teacher_id  , classroom_id , count(er.student_id) as totalstudent ,  sum(if(sq.id is null , 0 , 1)) as totalcorrect\n            from exams  as ex\n            left join subject_subjects sub on sub.id = ex.subject_id  \n            left join teacher_subjects as tsub on tsub.subject_id = sub.id and tsub.teacher_id !=1\n            left join teachers as t on t.id = tsub.teacher_id \n            left join classrooms on classrooms.teacher_id = t.id and  classrooms.subject_subject_id = sub.id\n            left join classroom_students as cs on cs.classroom_id = classrooms.id and cs.semester_id = " . $semester_id . "\n            left join exam_results as er on er.exam_id = ex.id and er.student_id = cs.student_id\n            left join student_grades as sq on sq.student_id = er.student_id and  sq.ref_value = er.exam_id  and sq.semester_id = " . $semester_id . " and sq.ref_key = 'examessay'\n\n            where ex.finish_at  <= '" . date("Y/m/d H:i:s") . "' and ex.type ='" . $exam_type . "' and ex.semester_id = " . $semester_id . " and ex.subject_id != 81 \n\n            group by classrooms.teacher_id , cs.classroom_id \n            order by ex.id asc , classrooms.teacher_id , classroom_id");
     $exams = collect($results);
     return view('exams::reports.correctexam', compact('exams'));
 }
Ejemplo n.º 30
0
 /**
  * Execute the console command.
  *
  * @return mixed
  */
 public function handle()
 {
     $semester_id = semester()->id;
     $results = ExamResult::leftJoin('exam_result_answers as era', 'era.exam_result_id', '=', 'exam_results.id')->select('exam_results.id', 'exam_results.student_id', 'exam_results.filename')->where('exam_results.filename', '!=', '')->where('exam_results.semester_id', $semester_id)->whereNull('era.id')->groupBy('exam_results.id')->get();
     // $semester_id = semester()->id;
     if (!$results->count()) {
         $this->comment(PHP_EOL . 'All is corrected' . PHP_EOL);
     }
     $this->comment(PHP_EOL . 'Starting Correcting ' . $results->count() . '....' . PHP_EOL);
     foreach ($results as $result) {
         // $this->comment(PHP_EOL.'C'.PHP_EOL);
         try {
             $file = File::get('/var/www/node/rest/exams/' . $result->filename);
         } catch (\Illuminate\Contracts\Filesystem\FileNotFoundException $e) {
             $this->comment(PHP_EOL . 'No Answers File Provided' . PHP_EOL);
             continue;
         }
         $exam_file = json_decode($file);
         if (empty($exam_file->exam_id)) {
             $error = 1;
             $this->comment(PHP_EOL . 'Wrong file no exam_id' . PHP_EOL);
             continue;
         }
         if (empty($exam_file->questions) or !is_array($exam_file->questions)) {
             $this->comment(PHP_EOL . 'No Answers in the file you provided' . PHP_EOL);
             continue;
         }
         $exam_id = $exam_file->exam_id;
         $student_id = $exam_file->student_id;
         if (!($exam = Exam::with(['questions' => function ($query) {
             $query->wherePivot('devide_grade', 0);
         }, 'questions.choices'])->find($exam_id))) {
             $this->comment(PHP_EOL . 'Exam does not exist' . PHP_EOL);
             continue;
         }
         $result_data = ['student_id' => $student_id, 'exam_id' => $exam->id, 'semester_id' => $exam->semester_id];
         $grade_per_question = 0.5;
         if ($exam->type == 'activity') {
             $grade_per_question = $this->activity_points / $exam->questions->count();
         } else {
             if ($exam->type == 'midterm') {
                 $grade_per_question = $this->midterm_points / $exam->questions->filter(function ($question) {
                     return $question->type != 'essay';
                 })->count();
             } else {
                 $this->comment(PHP_EOL . 'We Only correcting activities for now' . PHP_EOL);
                 continue;
             }
         }
         // dd($grade_per_question);
         // if ($result = ExamResult::firstOrCreate($result_data)) {
         $result_answers = [];
         $grade = 0.0;
         $answers = $exam_file->questions;
         foreach ($answers as $answer) {
             $result_answer = [];
             $result_answer['question_id'] = $answer->question_id;
             $result_answer['answer'] = $answer->answer;
             $result_answers[$answer->question_id] = $result_answer;
         }
         StudentGrade::where('student_id', $student_id)->where(['ref_key' => 'exam', 'ref_value' => $exam->id])->delete();
         $result->answers()->delete();
         foreach ($exam->questions as $question) {
             $current_grade = 0;
             switch ($question->type) {
                 case 'true_false':
                     $true_choice = $question->choices->first(function ($key, $choice) {
                         return $choice->istrue;
                     });
                     $is_true = array_where($answers, function ($key, $answer) use($true_choice) {
                         return $answer->answer == $true_choice->id;
                     });
                     // var_dump($true_choice->toArray());
                     if (count($is_true)) {
                         $current_grade = $grade_per_question;
                     }
                     break;
                 case 'single_choice':
                     $true_choice = $question->choices->first(function ($key, $choice) {
                         return $choice->istrue;
                     });
                     $is_true = array_where($answers, function ($key, $answer) use($true_choice) {
                         return $answer->answer == $true_choice->id;
                     });
                     if (count($is_true)) {
                         $current_grade = $grade_per_question;
                     }
                     break;
                 case 'multiple_choice':
                     $question_grade = 0;
                     $multiple_answer = array_first($answers, function ($key, $answer) use($question) {
                         return $answer->question_id == $question->id;
                     });
                     if ($multiple_answer) {
                         $all_answers = $multiple_answer ? array_filter(explode(",", $multiple_answer->answer)) : [];
                         $all_answered_count = count($all_answers);
                         if ($all_answered_count == $question->choices->count() || $all_answered_count == 0) {
                             $current_grade = 0.0;
                         } else {
                             $true_answers = $question->choices->filter(function ($question) {
                                 return $question->istrue;
                             });
                             if ($true_answers) {
                                 $true_answers_ids = $true_answers->pluck('id')->toArray();
                                 $true_answers_count = count($true_answers_ids);
                                 $right_answered_count = count(array_intersect($all_answers, $true_answers_ids));
                                 $wrong_answered_count = $all_answered_count - $right_answered_count;
                                 $grade_per_choice = $true_answers_count > 0 ? $grade_per_question / $true_answers_count : 0;
                                 $multichoice_right_grade = $right_answered_count * $grade_per_choice;
                                 $multichoice_wrong_grade = $wrong_answered_count * $grade_per_choice;
                                 if ($multichoice_wrong_grade <= $multichoice_right_grade) {
                                     $question_grade = $multichoice_right_grade - $multichoice_wrong_grade;
                                 } else {
                                     $question_grade = 0;
                                 }
                                 // if ($question_grade > $grade_per_question) {
                                 // $current_grade = $grade_per_question;
                                 // } else {
                                 $current_grade = $question_grade;
                                 // }
                                 // $current_grade = $multichoice_right_grade;
                             }
                         }
                     }
                     break;
             }
             $result_answers[$question->id]['degree'] = $current_grade;
             $grade += $current_grade;
         }
         foreach ($result_answers as $a) {
             $result->answers()->create($a);
         }
         if ($exam->type == 'activity' && $grade > $this->activity_points) {
             $grade = $this->activity_points;
         }
         $notes = '';
         switch ($exam->type) {
             case 'midterm':
                 $notes = 'درجة اختبار المنتصف الاختيار ' . $exam->name;
                 break;
             case 'activity':
                 $notes = 'درجة النشاط ' . $exam->name;
                 break;
         }
         $search_data = ['student_id' => $student_id, 'ref_value' => $exam->id, 'ref_key' => 'exam', 'subject_id' => $exam->subject_id, 'semester_id' => $semester_id, 'notes' => $notes];
         $update_data = ['value' => round($grade, 2)];
         StudentGrade::updateOrCreate($search_data, $update_data);
     }
     $this->comment(PHP_EOL . 'Correcting is done :)' . PHP_EOL);
 }