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()); }
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); }
/** * 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')); }
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); }
/** * 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')); }
/** * 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); }
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'); }
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); }
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'); }
/** * 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'); }
/** * 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; }); }
/** * 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]); }
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); }
/** * 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()); }
/** * 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); }
/** * 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); } } }
/** * 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')); }
/** * 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); }
/** * @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')); }
/** * 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(); } }
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'); }
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); } }
/** * 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')); // }); }
/** * 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); }
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); }
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')); }
<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'];
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')); }
/** * 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); }