public function delete(Semester $semesters, $sid) { $Semester = $semesters->where("id", $sid)->first(); $Semester->delete(); $yid = $Semester->academycycle_year_id; return redirect()->route('ac.semesters.index', compact('semester', 'yid')); }
/** * 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(); } }
/** * Run the database seeds. * * @return void */ public function run() { Model::unguard(); if (Semester::count() > 0) { return; } Semester::where('id', '>', 0)->delete(); Year::where('id', '>', 0)->delete(); $years = DB::connection('old')->table('eduyears')->get(); foreach ($years as $year) { $new_year = new Year(); //new_year->id = $year->sub_id; $new_year->name = $year->eyear_title; //$new_year->start_at = $year->eyear_created ; //$new_year->finish_at = $year->eyear_created + 1 year; $new_year->save(); } $this->command->info('year table seeded!'); $sems = DB::connection('old')->table('semesters')->get(); foreach ($sems as $sem) { $new_semester = new Semester(); $new_semester->id = $sem->sem_id; $new_semester->name = $sem->sem_name; // $new_semester->start_at = $sem->sem_from ; // $new_semester->finish_at = $sem->sem_to; $new_semester->active = $sem->sem_current; $new_semester->Academycycle_year_id = $sem->sem_eyearid; $term = ''; if ($sem->sem_term == 1) { $term = 'first'; } if ($sem->sem_term == 2) { $term = 'second'; } if ($sem->sem_term == 3) { $term = 'summer'; } $new_semester->order = $term; $new_semester->save(); } $this->command->info('Semester table seeded!'); }
public function getGraduateCertificate($background = false) { $student = Student::select('students.*')->joinTermName()->findOrFail($this->student_id); $semesters = get_student_grades($student->id); if ($this->student_id == 1821) { $gpa = 3.59; } else { $gpa = GPA($semesters); } $year_id = $semesters = Semester::where('id', $student->histories->first()->academycycle_semester_id)->first()->id; $year_name = Year::where('id', '=', $year_id - 1)->first()->name; $pdf = $this->preparePdf($background); $html = '<h2>إفادة بإكمال درجة</h2>'; $pdf->writeHTMLCell(210, 20, 10, 50, $html, 0, 0, false, true, "R"); $valuation = check_final_valuation($gpa); if ($student->histories->where('state', 'graduate')->first()) { $graduated_date = $student->histories->where('state', 'graduate')->first()->updated_at->format('Y/m/d'); } else { $graduated_date = ''; } $fourth = ' '; if ($student->registration->fourth_name) { $fourth = ' بن ' . $student->registration->fourth_name . ' '; } $pdf->SetFontSize(16, 'B'); if ($student->gender == 'f') { $html = '<p>تشهد كلية العلوم الشرعية - التعليم عن بعد بأن:<br>' . $student->registration->first_name . ' بنت ' . $student->registration->second_name . ' بن ' . $student->registration->third_name . $fourth . $student->registration->last_name . '<br>الرقم الجامعي:' . $student->username . '<br> الجنسيـة: ' . $student->registration->birthcountry->name . ' <br> </p>'; $pdf->writeHTMLCell(100, 20, 10, 60, $html, 0, 0, false, true, "R"); $pdf->SetFontSize(16, 'B'); $html = '<p>قد أكملت متطلبات درجة الدبلوم في العلوم الشرعية<br>في العام الأكاديمي: ' . $year_name . '<br>بمعدل تراكمي ' . $gpa . ' بتقدير ' . $valuation . '<br><br>بتاريخ ' . $graduated_date . 'م<br><br>وسوف تمنح الدرجة رسمياً بعد اعتمادها. <p>'; $pdf->writeHTMLCell(100, 20, 10, 110, $html, 0, 0, false, true, "R"); } else { $html = '<p>تشهد كلية العلوم الشرعية - التعليم عن بعد بأن:<br>' . $student->registration->first_name . ' بن ' . $student->registration->second_name . ' بن ' . $student->registration->third_name . $fourth . $student->registration->last_name . '<br> الرقم الجامعي:' . $student->username . '<br> الجنسيـة: ' . $student->registration->birthcountry->name . '<br> </p>'; $pdf->writeHTMLCell(100, 20, 10, 60, $html, 0, 0, false, true, "R"); $pdf->SetFontSize(16, 'B'); $html = '<p> قد أكمل متطلبات درجة الدبلوم في العلوم الشرعية <br>في العام الأكاديمي: ' . $year_name . ' <br>بمعدل تراكمي ' . $gpa . ' بتقدير ' . $valuation . ' <br><br>بتاريخ ' . $graduated_date . 'م <br><br>وسوف تمنح الدرجة رسمياً بعد اعتمادها. <p>'; $pdf->writeHTMLCell(100, 20, 10, 110, $html, 0, 0, false, true, "R"); } $pdf->SetFontSize(20, 'B'); $html = 'المشرف العام على التعليم عن بعد<br>مستشار معالي وزير الأوقاف والشؤون الدينية'; $pdf->writeHTMLCell(210, 20, 0, 200, $html, 0, 0, false, true, "C"); $pdf->SetFontSize(16, 'B'); $html = '<table cellpadding="3"> <tr><td align="right">لمزيد من التفاصيل يمكن طلب كشف الدرجات الأصلي</td></tr> </table>'; $pdf->writeHTMLCell(100, 20, 10, 250, $html, 0, 0, false, true, "R"); //English language switch ($valuation) { case 'امتياز': $valuation = 'excellence'; break; case 'امتياز مع مرتبة الشرف': $valuation = 'excellent with honors'; break; case 'جيد جدا': $valuation = 'very good'; break; case 'جيد': $valuation = 'good'; break; case 'مقبول': $valuation = 'fairly good'; break; default: $valuation = ''; } $html = '<h2>Notification of Degree Completion</h2>'; $pdf->writeHTMLCell(205, 20, 0, 50, $html, 0, 0, false, true, "L"); $pdf->SetFontSize(14, 'B'); $fourth = ''; if ($student->registration->fourth_name_latin) { $fourth = ' bin ' . $student->registration->fourth_name_latin . ' '; } if ($student->gender == 'f') { $html = '<p>College of Shari’a Sciences - Distance learning <br>attests that:<br>' . $student->registration->first_name_latin . ' bint ' . $student->registration->second_name_latin . ' bin ' . $student->registration->third_name_latin . $fourth . $student->registration->last_name_latin . ' <br>Student ID: ' . $student->username . '<br> Nationality: ' . $student->registration->birthcountry->nationality_en . ' <br> </p>'; } else { $html = '<p>College of Shari’a Sciences - Distance learning <br>attests that:<br>' . $student->registration->first_name_latin . ' bin ' . $student->registration->second_name_latin . ' bin <br>' . $student->registration->third_name_latin . $fourth . $student->registration->last_name_latin . ' <br>Student ID: ' . $student->username . '<br> Nationality: ' . $student->registration->birthcountry->nationality_en . ' <br> </p>'; } $pdf->writeHTMLCell(205, 10, 0, 60, $html, 0, 0, false, true, "L"); $pdf->SetFontSize(14, 'B'); $html = '<p>Has successfully fulfilled the graduation <br>requirements of the Diploma degree in Sharia <br>Sciences on the academic year ' . $year_name . ' with <br>accumulative grade of ' . $gpa . ' ' . $valuation . '<br><br> on ' . $graduated_date . ' <br><br>The degree will be officially awarded after <br>the endorsement.</p>'; $pdf->writeHTMLCell(205, 10, 0, 110, $html, 0, 0, false, true, "L"); $pdf->SetFontSize(14, 'B'); $html = '<p>For more details, the official transcript could be<br>requested.</p>'; $pdf->writeHTMLCell(205, 10, 0, 250, $html, 0, 0, false, true, "L"); ob_clean(); return $pdf; }
/** * Handle the event. * * @param RegistrationStepChanged $event * @return void */ public function handle(RegistrationStepChanged $event) { $registration = $event->registration; $semester = semester(); $finish = $semester ? $semester->finish_at : date('Y-m-d'); if ($semester->order != 'first') { $semester = Semester::where('order', 'first')->where('start_at', '>', $finish)->orderBy('start_at', 'ASC')->first(); } if (empty($semester)) { return false; } $registration->load('step', 'student', 'contactcountry', 'files'); if ($registration->step->enroll == 1 && !$registration->student) { $equation_subjects_ids = RegistrationEquationSubject::whereNotNull('subject_id')->where('status', 'accepted')->whereHas('equation', function ($w) use($registration) { $w->where('registration_id', $registration->id); })->pluck('subject_id')->toArray(); $subject_ids = []; $i = 0; $department = 0; while (count(array_diff($subject_ids, $equation_subjects_ids)) == 0) { $department = Department::where('spec_id', $registration->academystructure_specialty_id)->where(function ($w) use($department) { $w->orWhere('parent_id', !empty($department->id) ? $department->id : 0); $w->orWhereNull('parent_id'); })->first(); $subject_ids = json_decode($department->subject_ids, TRUE); $i++; if ($i == 20) { break; } } if (empty($subject_ids)) { return false; } $subjects = Subject::whereIn('id', $subject_ids)->get(); $mobile = ($registration->contactcountry ? $registration->contactcountry->calling_code : "968") . $registration->contact_mobile; $data = ['username' => $registration->username, 'username_prefix' => $registration->enroll_code, 'password' => bcrypt($registration->contact_mobile), 'name' => $registration->fullname, 'email' => $registration->contact_email, 'mobile' => $mobile, 'state' => 'active', 'study_state' => 'active', 'national_id' => $registration->national_id, 'gender' => $registration->gender, 'registration_id' => $registration->id, 'academystructure_department_id' => $department->id, 'registration_type_id' => $registration->registration_type_id]; if ($registration->files) { $photo = $registration->files->first(function ($key, $value) { return $key == 'photo'; }); if ($photo) { // $data['photo'] = asset($photo->file->url()); } } Eloquent::unguard(); $student = Student::create($data); $invoiceItem = FinancialInvoiceItem::where('slug', 'study_fee')->first(); $study_fee = $registration->study_fee > 0 ? $registration->study_fee : $invoiceItem->amount; $total_amount = $subjects->sum(function ($s) use($equation_subjects_ids, $study_fee) { $amount = 0; if (!in_array($s->id, $equation_subjects_ids)) { $amount = !$s->is_quran ? $s->hour * (int) $study_fee : $s->hour * ((int) $study_fee / 2); } return $amount; }); if ($student) { if ($registration->debit && $invoiceItem) { $invoiceData = ['ref_key' => 'registrations', 'ref_value' => $registration->id, 'student_id' => $student->id, 'amount' => $registration->debit, 'type' => 'credit', 'item_id' => $invoiceItem->id, 'pay_type' => 'epay', 'bank_code' => $registration->reason_code, 'transaction_wid' => $registration->transaction_uuid, 'note' => 'ايصال دفع مصاريف التسجيل.']; FinancialInvoice::create($invoiceData); // create debit invoice $invoiceData = ['ref_key' => 'registrations', 'ref_value' => $registration->id, 'student_id' => $student->id, 'amount' => $total_amount, 'type' => 'debit', 'item_id' => $invoiceItem->id, 'pay_type' => 'epay', 'note' => 'فاتةورة التسجيل.']; FinancialInvoice::create($invoiceData); } foreach ($subjects as $subject) { $subject_state = in_array($subject->id, $equation_subjects_ids) ? 'equal' : 'study'; $subject_payed = in_array($subject->id, $equation_subjects_ids) ? 0 : 1; if (!$registration->debit && $registration->step->make_payment) { $subject_payed = 0; } $data = ['student_id' => $student->id, 'subject_id' => $subject->id, 'semester_id' => $semester->id, 'academystructure_department_id' => $department->id, 'state' => $subject_state, 'note' => '', 'payed' => $subject_payed]; $studentSubject = StudentSubject::create($data); } $historyData = ['student_id' => $student->id, 'state' => 'active', 'study_state' => 'active', 'academycycle_semester_id' => $semester->id, 'academystructure_department_id' => $department->id]; StudentHistory::create($historyData); $this->createStudentEmail($student, $registration->contact_mobile); try { if (!empty($photo)) { $student->photo = $photo; $student->save(); } } catch (\Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException $e) { } } //\Log::info('turn to student '.$response); } }
/** * 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); } } } }
private function checkIntervalsConflictSemester($request, $semester_id = 0) { $total = Semester::where('id', '!=', $semester_id)->whereRaw("'" . $request->start_at . "' < finish_at AND start_at < '" . $request->finish_at . "'")->count(); return $total; }