/** * 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 UserAuthenticated $event * @return void */ public function handle(DelayOrderAccepted $event) { // dd('STOP HERE'); $delay_order = $event->order; //drop subject /* $subject_ids = Subject::student($delay_order->student_id) ->Where('semester_id' , semester()->id) ->Where('state' , 'study') ->pluck('id')->toArray(); StudentSubject::whereIn('subject_id', $subject_ids)->update(array("state" => "drop")); */ StudentSubject::where('student_id', $delay_order->student_id)->Where('semester_id', $delay_order->semester_id)->whereIn('state', ['study', 'fail'])->update(['state' => 'drop', 'study_state' => 'stop']); }
/** * 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(); } }
/** * 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')); // }); }
public function approve($order_id) { $order = OrderChangeDepartment::findOrFail($order_id); $student_id = $order->student_id; $depid = $order->to; $current_dep = $order->from; $StudentHistory = StudentHistory::where('student_id', $student_id)->where('academycycle_semester_id', semester()->id)->update(['academystructure_department_id' => $depid]); $student = Student::with('subjects')->where('id', $student_id)->first(); $student->academystructure_department_id = $depid; $student->save(); $department = Department::findOrFail($current_dep); $current_subject_ids = json_decode($department->subject_ids, TRUE); $current_payed_subject_ids = StudentSubject::select('subject_id')->where('semester_id', semester()->id)->where('student_id', $student_id)->where('state', 'study')->where('payed', 1)->get(); $cuttent_invoice_amount = 0; if ($current_payed_subject_ids->count() > 0) { $cuttent_invoice_amount = Subject::select(DB::raw('sum(hour*amount) as total_amount'))->whereIn('id', $current_payed_subject_ids)->first(); } $new_department = Department::findOrFail($depid); $new_subject_ids = json_decode($new_department->subject_ids, TRUE); //if($current_dep == 8 or $current_dep == 13 or $current_dep =14 ){ //update department subjects StudentSubject::where('semester_id', semester()->id)->where('student_id', $student_id)->where('state', 'study')->whereIn('subject_id', $current_subject_ids)->update(['state' => 'drop']); foreach ($new_subject_ids as $new_subject_id) { $new_student_subject = new StudentSubject(); $new_student_subject->subject_id = $new_subject_id; $new_student_subject->student_id = $student_id; $new_student_subject->semester_id = semester()->id; $new_student_subject->academystructure_department_id = $depid; $new_student_subject->state = 'study'; $new_student_subject->save(); } if ($current_payed_subject_ids->count() > 0) { $new_payed_subject_ids = StudentSubject::select('subject_id')->where('semester_id', semester()->id)->where('student_id', $student_id)->where('state', 'study')->get(); $new_invoice_amount = Subject::select(DB::raw('sum(hour*amount) as total_amount'))->whereIn('id', $new_payed_subject_ids)->first(); if ($new_invoice_amount < $cuttent_invoice_amount) { StudentSubject::where('semester_id', semester()->id)->where('student_id', $student_id)->where('state', 'study')->update(['payed' => 1]); $invoiceData = ['ref_key' => 'Order_Change_AC_Departments', 'ref_value' => $order_id, 'student_id' => $student_id, 'amount' => $cuttent_invoice_amount->total_amount - $new_invoice_amount->total_amount, 'type' => 'credit', 'semester_id' => semester()->id, 'note' => 'فرق تغيير التخصص']; FinancialInvoice::create($invoiceData); } if ($new_invoice_amount > $cuttent_invoice_amount) { StudentSubject::where('semester_id', semester()->id)->where('student_id', $student_id)->where('state', 'study')->update(['payed' => 1]); } if ($new_invoice_amount > $cuttent_invoice_amount) { StudentSubject::where('semester_id', semester()->id)->where('student_id', $student_id)->where('state', 'study')->where('subject_id', '!=', 35)->update(['payed' => 1]); } } //updtae remain subjects (not in dep id) to be in same depid StudentSubject::where('semester_id', semester()->id)->where('student_id', $student_id)->where('state', 'study')->update(['academystructure_department_id' => $depid]); $order->state = 1; $order->save(); $msg = 'تم تغيير التخصص '; return redirect()->route('orders.change.department.index')->with('success', $msg); // }else{ // } }
public function equalsubject(Request $request) { // for all_complete or part complete or all_refuse $complete = 0; $refuse = 0; $equal_subject; $order_state = ''; foreach ($request->order_equal_subject_id as $key => $value) { $equal_subject = EqualSubject::with('order')->findOrFail($value); if ($request->equal_subject_id[$key] != '-1') { $equal_subject->equal_subject_id = $request->equal_subject_id[$key]; $equal_subject->is_equal = 1; $complete = 1; // convert student_subject state to equal if ($equal_subject->save()) { StudentSubject::where("subject_id", $equal_subject->equal_subject_id)->where('student_id', $equal_subject->order->student_id)->update(['state' => 'equal']); } } else { $equal_subject->is_equal = -1; $refuse = 1; $equal_subject->save(); } } //convert order_equal state to (complete or part complete) $equal_order = Equal::findOrFail($equal_subject->equal_order_id); if ($complete == 0 && $refuse == 0) { // no subjetct sent } elseif ($complete == 1 && $refuse == 0) { $order_state = 'قبول كلى'; } elseif ($complete == 0 && $refuse == 1) { $order_state = 'رفض كلى'; } else { $order_state = 'قبول جزئي'; } $equal_order->state = $order_state; $equal_order->save(); //save in history $order_history = new Orderhistory(); $order_history->ref_key = 'order_equals'; $order_history->ref_value = $equal_order->id; $order_history->state = $order_state; //$order_history ->note =$request->note; $order_history->created_by = user()->id; $order_history->save(); return redirect()->route('equal.show', $equal_order->id)->with('success', trans('orders::order.change_success')); }
/** * Execute the job. * * @return void */ public function handle() { $student = Student::find($this->student_id); $currentSemester = semester(); $summerSemester = Semester::where('id', '>', $currentSemester->id)->where('order', 'summer')->orderBy('id', 'ASC')->first(); // Log::info($student->id, $currentSemester->id, $summerSemester->id); if ($student && $currentSemester && $summerSemester) { $nextSemester = Semester::where('id', '>', $currentSemester->id)->where('order', '!=', 'summer')->orderBy('id', 'ASC')->first(); if (!$nextSemester) { return false; } $current_department_id = $student->academystructure_department_id; if ($currentSemester->order != 'summer') { $nextDepartment = Department::where('parent_id', $student->academystructure_department_id)->first(); if ($nextDepartment) { $student->state = 'active'; $student->study_state = 'success'; $student->academystructure_department_id = $nextDepartment->id; } } $history = StudentHistory::where('student_id', $student->id)->orderBy('id', 'desc')->where('academycycle_semester_id', $currentSemester->id)->first(); if ($history) { $history->study_state = 'success'; $history->save(); } if ($student->save()) { // get current semester subjects and make them fail or success for current 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($currentSemester, $student) { $join->on('stugr.subject_id', '=', 'subsub.id')->where('stugr.semester_id', '=', $currentSemester->id)->where('stugr.student_id', '=', $student->id); })->whereIn('state', ['study'])->where('student_subjects.semester_id', '=', $currentSemester->id)->where('student_subjects.student_id', $student->id)->groupBy('subsub.id')->get(); $failed_subjects_ids = []; $passed_subjects_ids = []; foreach ($subjects as $subject) { if ($subject->subject_points < 50) { $failed_subjects_ids[] = $subject->subject_id; } elseif ($subject->subject_points >= 50) { $passed_subjects_ids[] = $subject->subject_id; } } StudentSubject::where('student_id', $student->id)->whereIn('subject_id', $failed_subjects_ids)->update(['state' => 'fail']); StudentSubject::where('student_id', $student->id)->whereIn('subject_id', $passed_subjects_ids)->update(['state' => 'success']); // end success and fail if ($currentSemester->order != 'summer' && $nextDepartment) { $next_subject_ids = json_decode($nextDepartment->subject_ids, TRUE); $equal_subject_ids = EqualSubject::whereHas('order', function ($w) use($student) { $w->where('student_id', $student->id); })->pluck('equal_subject_id')->toArray(); $next_subject_study_ids = array_diff($next_subject_ids, $equal_subject_ids); $next_subject_equal_ids = array_intersect($next_subject_ids, $equal_subject_ids); $student->subjects()->attach($next_subject_study_ids, ['semester_id' => $nextSemester->id, 'academystructure_department_id' => $nextDepartment->id, 'state' => 'study']); $student->subjects()->attach($next_subject_equal_ids, ['semester_id' => $nextSemester->id, 'academystructure_department_id' => $nextDepartment->id, 'state' => 'equal']); $data = ['state' => 'active', 'study_state' => 'active', 'academycycle_semester_id' => $nextSemester->id, 'academystructure_department_id' => $nextDepartment->id]; $student->histories()->create($data); // create invoice for student if ($next_subject_equal_ids) { $item = FinancialInvoiceItem::where('slug', 'study_fee')->first(); $subjects_count = Subject::whereIn('id', $next_subject_equal_ids)->where('is_quran', 0)->count(); $data = ['student_id' => $student->id, 'type' => 'debit', 'item_id' => $item->id, 'pay_type' => NULL, 'semester_id' => $nextSemester->id, 'amount' => $subjects_count * $item->amount]; FinancialInvoice::create($data); } } // move any failed subjects if less than 3 to summer semester $all_failed_subjects = StudentSubject::groupBy('subject_id')->where('state', 'fail')->pluck('subject_id')->toArray(); $all_passed_subjects = StudentSubject::groupBy('subject_id')->where('state', 'success')->pluck('subject_id')->toArray(); $failed_subjects = array_diff($all_failed_subjects, $all_passed_subjects); if (COUNT($failed_subjects) <= 3) { $summerSemester = Semester::where('id', '>', $currentSemester->id)->where('order', 'summer')->orderBy('id', 'ASC')->first(); $student->subjects()->attach($failed_subjects, ['semester_id' => $summerSemester->id, 'academystructure_department_id' => $current_department_id, 'state' => 'study']); $data = ['state' => 'active', 'study_state' => 'active', 'academycycle_semester_id' => $summerSemester->id, 'academystructure_department_id' => $current_department_id]; $student->histories()->create($data); } } } }
/** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); // echo 'in'; if (StudentSubject::count()) { // return; } // $user_subjects = DB::connection('old') // ->table('user_subject') // // ->where('us_userid', 148) // ->get(); // echo DB::connection('old')->table('user_subject')->count(); // exit; // $this->call("OthersTableSeeder"); DB::statement('SET FOREIGN_KEY_CHECKS=0;'); StudentSubject::where('student_id', '!=', 10000)->delete(); // StudentSubject::truncate(); StudentGrade::where('student_id', '!=', 10000)->delete(); // StudentGrade::truncate(); $all_user_subjects = DB::connection('old')->table('user_subject')->leftJoin('users', 'users.user_id', '=', 'user_subject.us_userid')->select('users.user_academyid', 'us_state', 'us_subid', 'us_userid', 'us_semid', 'us_result')->get(); // echo 'got it'; $new_departments = $new_department = Department::select('ad.id', 'ay.id AS ay_id', 'as.code')->join('academystructure_terms as at', 'at.id', '=', 'ad.term_id')->join('academystructure_years as ay', function ($j) { $j->on('at.year_id', '=', 'ay.id'); // ->where('ay.id', '=',$academy['academy_year']); })->join('academystructure_specialties as as', function ($j) { $j->on('as.id', '=', 'ad.spec_id'); // ->where('as.code', '=', $dep_sepcialty_code); })->from('academystructure_departments as ad')->get()->toArray(); $all_old_academies = $academy = DB::connection('old')->table('sub_academy')->select('academy_department', 'academy_year', 'academy_term')->select('academy.*', 'sub_academy.sub_acad_subid')->join('academy', 'sub_acad_academyid', '=', 'academy_id')->get(); $all_old_academies = array_map(function ($a) { return (array) $a; }, $all_old_academies); $student_subjects = []; $student_grades = []; // var_dump(count($all_user_subjects)); foreach ($all_user_subjects as $user_subject) { $student_subject = []; $student_grade = []; $state = $user_subject->us_state == 'sucess' ? 'success' : $user_subject->us_state; $state = $state == 'edu' ? 'study' : $state; $state = $state == 'equ' ? 'equal' : $state; if ($user_subject->us_semid == 9) { $academy = array_filter($all_old_academies, function ($a) use($user_subject) { return $user_subject->user_academyid == $a['academy_id']; }); } else { $academy = array_filter($all_old_academies, function ($a) use($user_subject) { return $user_subject->us_subid == $a['sub_acad_subid']; }); } $academy = current($academy); if (empty($academy)) { continue; } $dep_sepcialty_code = 'D'; if ($academy['academy_department'] == 'اصول الفقة') { $dep_sepcialty_code = 'O'; } elseif ($academy['academy_department'] == 'الدرسات الاسلامية') { $dep_sepcialty_code = 'I'; } $new_departments_filtered = array_filter($new_departments, function ($d) use($academy, $dep_sepcialty_code) { $exist = $d['ay_id'] == $academy['academy_year'] && $d['code'] == $dep_sepcialty_code; if ($exist) { // var_dump($d); } return $exist; }); if ($academy['academy_term'] == 2) { $new_department = array_pop($new_departments_filtered); } else { $new_department = array_shift($new_departments_filtered); } $student_subject['student_id'] = $user_subject->us_userid; $student_subject['subject_id'] = $user_subject->us_subid; $student_subject['semester_id'] = $user_subject->us_semid; $student_subject['state'] = $state; $student_subject['academystructure_department_id'] = $new_department['id']; $student_grade['student_id'] = $user_subject->us_userid; $student_grade['subject_id'] = $user_subject->us_subid; $student_grade['semester_id'] = $user_subject->us_semid; $student_grade['notes'] = "تم جلبها من النظام القديم"; $student_grade['value'] = $user_subject->us_result; $student_grade['created_at'] = new DateTime(); $student_grade['updated_at'] = new DateTime(); if ($user_subject->us_result >= 0) { $student_grades[] = $student_grade; } $student_subjects[] = $student_subject; } foreach (array_chunk($student_subjects, 1000) as $chunk) { DB::table('student_subjects')->insert($chunk); } foreach (array_chunk($student_grades, 1000) as $chunk) { DB::table('student_grades')->insert($chunk); } }