示例#1
0
 /**
  * @desc Add New Department
  * @create function Open Create From view
  * @param Term $term
  * @param Department $department for parent department list (before current term)
  * @param Specialty $specialty for parent specialty list
  * @param Subject $subject for parent subject list
  **/
 public function create(Term $term, Department $department, Specialty $specialty, Subject $subject)
 {
     $subjects = $subject->pluck('name', 'id')->toArray();
     $specialties = $specialty->get();
     $term->load('year', 'year.faculty');
     // dd($term->year->faculty->id);
     $menu = $department->menu()->where('faculty_id', $term->year->faculty->id)->where('term_id', '<', $term->id)->get();
     return view('academystructure::departments.create', compact('term', 'specialties', 'menu', 'subjects'));
 }
 /**
  * Register the service provider.
  *
  * @return void
  */
 public function register()
 {
     //Faculty
     Faculty::created(function ($faculty) {
         UserLog::create(['operation' => 'create', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_Faculty', 'reference_id' => $faculty->id]);
     });
     Faculty::updated(function ($faculty) {
         UserLog::create(['operation' => 'update', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_Faculty', 'reference_id' => $faculty->id]);
     });
     Faculty::deleted(function ($faculty) {
         UserLog::create(['operation' => 'delete', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_Faculty', 'reference_id' => $faculty->id]);
     });
     //Year
     Year::created(function ($year) {
         UserLog::create(['operation' => 'create', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_Year', 'reference_id' => $year->id]);
     });
     Year::updated(function ($year) {
         UserLog::create(['operation' => 'update', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_Year', 'reference_id' => $year->id]);
     });
     Year::deleted(function ($year) {
         UserLog::create(['operation' => 'delete', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_Year', 'reference_id' => $year->id]);
     });
     //Term
     Term::created(function ($term) {
         UserLog::create(['operation' => 'create', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_term', 'reference_id' => $term->id]);
     });
     Term::updated(function ($term) {
         UserLog::create(['operation' => 'update', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_term', 'reference_id' => $term->id]);
     });
     Term::deleted(function ($term) {
         UserLog::create(['operation' => 'delete', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_term', 'reference_id' => $term->id]);
     });
     //Department
     Department::created(function ($department) {
         UserLog::create(['operation' => 'create', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_department', 'reference_id' => $department->id]);
     });
     Department::updated(function ($department) {
         UserLog::create(['operation' => 'update', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_department', 'reference_id' => $department->id]);
     });
     Department::deleted(function ($department) {
         UserLog::create(['operation' => 'delete', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_department', 'reference_id' => $department->id]);
     });
     //Specailty
     Specialty::created(function ($specialty) {
         UserLog::create(['operation' => 'create', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_specialty', 'reference_id' => $specialty->id]);
     });
     Specialty::updated(function ($specialty) {
         UserLog::create(['operation' => 'update', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_specialty', 'reference_id' => $specialty->id]);
     });
     Specialty::deleted(function ($specialty) {
         UserLog::create(['operation' => 'delete', 'user_id' => user() ? user()->id : NULL, 'reference_key' => 'Academystructure_specialty', 'reference_id' => $specialty->id]);
     });
 }
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     Model::unguard();
     DB::statement('SET FOREIGN_KEY_CHECKS=0;');
     if (Department::count()) {
         return;
     }
     Year::truncate();
     Department::truncate();
     Faculty::truncate();
     Specialty::truncate();
     Term::truncate();
     $specialties = [['name' => 'العلوم الشرعية', 'type' => 'dep', 'code' => 'G'], ['name' => 'الفقه و علومه', 'type' => 'bac', 'code' => 'O'], ['name' => 'الدراسات الاسلامية', 'type' => 'bac', 'code' => 'I']];
     foreach ($specialties as $s) {
         Specialty::create($s);
     }
     $structure = [['name' => 'كلية العلوم الشرعية', 'years' => [['name' => 'السنة الأولى', 'terms' => [['name' => 'الفصل الأول', 'departments' => [['subject_ids' => json_encode([1, 2, 3, 4, 5, 6]), 'spec_id' => 1], ['subject_ids' => json_encode([1, 2, 3, 4, 5, 6]), 'spec_id' => 2], ['subject_ids' => json_encode([1, 2, 3, 4, 5, 6]), 'spec_id' => 3]]], ['name' => 'الفصل الثاني', 'departments' => [['subject_ids' => json_encode([12, 11, 10, 14, 9, 8]), 'spec_id' => 1], ['subject_ids' => json_encode([12, 11, 10, 14, 9, 8]), 'spec_id' => 2], ['subject_ids' => json_encode([12, 11, 10, 14, 9, 8]), 'spec_id' => 3]]]]], ['name' => 'السنة الثانية', 'terms' => [['name' => 'الفصل الثالث', 'departments' => [['subject_ids' => json_encode([15, 16, 17, 18, 19, 20, 21]), 'spec_id' => 1], ['subject_ids' => json_encode([15, 16, 17, 18, 19, 20, 21]), 'spec_id' => 2], ['subject_ids' => json_encode([15, 16, 17, 18, 19, 20, 21]), 'spec_id' => 3]]], ['name' => 'الفصل الرابع', 'departments' => [['subject_ids' => json_encode([22, 23, 24, 29, 26, 27, 29]), 'spec_id' => 1], ['subject_ids' => json_encode([22, 23, 24, 29, 26, 27, 29]), 'spec_id' => 2], ['subject_ids' => json_encode([22, 23, 24, 29, 26, 27, 29]), 'spec_id' => 3]]]]], ['name' => 'السنة الثالثة', 'terms' => [['name' => 'الفصل الخامس', 'departments' => [['subject_ids' => json_encode([31, 32, 33, 34, 30, 35, 36, 39]), 'spec_id' => 2], ['subject_ids' => json_encode([32, 33, 30, 34, 37, 36, 39]), 'spec_id' => 3], ['subject_ids' => json_encode([33, 37]), 'spec_id' => 1]]], ['name' => 'الفصل السادس', 'departments' => [['subject_ids' => json_encode([41, 42, 43, 44, 45, 46, 47, 52]), 'spec_id' => 2], ['subject_ids' => json_encode([31, 50, 46, 47, 48, 49, 51, 52]), 'spec_id' => 3]]]]], ['name' => 'السنة الرابعة', 'terms' => [['name' => 'الفصل السابع', 'departments' => [['subject_ids' => json_encode([53, 54, 55, 56, 57, 58, 59, 77]), 'spec_id' => 2], ['subject_ids' => json_encode([55, 59, 60, 67, 68, 69, 75, 77]), 'spec_id' => 3]]], ['name' => 'الفصل الثامن', 'departments' => [['subject_ids' => json_encode([58, 61, 62, 63, 64, 65, 76, 78]), 'spec_id' => 2], ['subject_ids' => json_encode([58, 66, 70, 71, 72, 73, 74, 78]), 'spec_id' => 3]]]]]]]];
     $last_1_id = null;
     $last_2_id = null;
     $last_3_id = null;
     foreach ($structure as $f) {
         $faculty = Faculty::create(['name' => $f['name']]);
         foreach ($f['years'] as $y) {
             $year = Year::create(['name' => $y['name'], 'faculty_id' => $faculty->id]);
             foreach ($y['terms'] as $t) {
                 $term = Term::create(['year_id' => $year->id, 'name' => $t['name']]);
                 foreach ($t['departments'] as $d) {
                     $department = Department::create(['spec_id' => $d['spec_id'], 'subject_ids' => $d['subject_ids'], 'parent_id' => ${'last_' . $d['spec_id'] . '_id'}, 'term_id' => $term->id]);
                     if ($d['spec_id'] == 1) {
                         $last_1_id = $department->id;
                     } elseif ($d['spec_id'] == 2) {
                         $last_2_id = $department->id;
                     } elseif ($d['spec_id'] == 3) {
                         $last_3_id = $department->id;
                     }
                 }
             }
         }
     }
 }
示例#4
0
    public function index(Request $request)
    {
        $years = Year::pluck('name', 'id')->toArray();
        $semester = semester();
        $current_semester_id = $semester->id;
        $statuses = ["r" => trans('students::success.repeaters'), 's' => trans('students::success.successful')];
        $students = Student::selectRaw('sh2.study_state as shstudy,students.*, GROUP_CONCAT(at.id) AS terms,
			GROUP_CONCAT(sh.academycycle_semester_id) AS semesters')->join('student_histories AS sh', function ($join) use($current_semester_id) {
            $join->on('sh.student_id', '=', 'students.id')->where('sh.academycycle_semester_id', '<=', $current_semester_id);
        })->leftJoin('student_histories AS sh2', function ($join) use($current_semester_id) {
            $join->on('sh2.student_id', '=', 'students.id')->where('sh2.academycycle_semester_id', '=', $current_semester_id);
        })->join('academystructure_departments AS ad', 'ad.id', '=', 'sh.academystructure_department_id')->join('academystructure_terms AS at', 'at.id', '=', 'ad.term_id')->join('academystructure_years AS ay', 'ay.id', '=', 'at.year_id')->where('students.state', 'active')->whereNotIn('sh2.study_state', ['success', 'fail', 'stop', 'repeat'])->isStudying();
        if ($request->has('year')) {
            //$students->where('ay.id', $request->input('year'));
        }
        $students = $students->groupBy('students.id')->paginate(50);
        $students->each(function ($student) use($current_semester_id) {
            $terms_arr = explode(",", $student->terms);
            $sems_arr = explode(",", $student->semesters);
            $all_failed_subjects = StudentSubject::groupBy('subject_id')->where(function ($query) {
                return $query->orWhere(function ($query) {
                    return $query->where('state', 'fail')->where('semester_id', '<', semester()->id);
                })->orWhere(function ($query) {
                    return $query->where('state', 'study')->where('semester_id', semester()->id);
                });
            })->where('student_id', $student->id)->pluck('subject_id')->toArray();
            // dd($all_failed_subjects);
            $all_passed_subjects = StudentSubject::groupBy('subject_id')->where('state', 'success')->where('student_id', $student->id)->pluck('subject_id')->toArray();
            $accumulation_hours = 0;
            $term_average = 0;
            $accumulation_points = 0;
            $terms = collect();
            foreach ($terms_arr as $term_id) {
                $terms->push(Term::find($term_id));
            }
            $failed_subjects = [];
            $passed_subjects = [];
            // beging foreach terms
            foreach ($terms as $key => $term) {
                $semester_id = $sems_arr[$key];
                $term->subjects = StudentSubject::selectRaw("subsub.id as subject_id,SUM(stugr.value) AS subject_points,\n\t\t\t\tstudent_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($semester_id, $student) {
                    $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('subject_id')->get();
                $term->subjects->each(function ($subject) use(&$passed_subjects, &$failed_subjects, $student, $current_semester_id, $semester_id, &$all_failed_subjects, &$all_passed_subjects) {
                    $subject->details = grade_details($subject->subject_points, $subject->subject_hours);
                    if ($semester_id == $current_semester_id) {
                        if ((double) $subject->subject_points < 50) {
                            $all_failed_subjects[] = $subject->subject_id;
                            $failed_subjects[] = $subject->subject_id;
                        } else {
                            $all_passed_subjects[] = $subject->subject_id;
                            $passed_subjects[] = $subject->subject_id;
                        }
                    }
                });
                $hours = $term->subjects->sum('subject_hours');
                $quran_hours = $term->subjects->sum(function ($s) {
                    return $s->is_quran ? $s->subject_hours : 0;
                });
                $points = number_format($term->subjects->sum(function ($subject) {
                    return $subject->details->points;
                }), 2);
                $term_average = $hours ? number_format($points / ($hours - $quran_hours), 2) : 0.0;
                $student->term_average = $term_average;
                $accumulation_points += $points;
                $accumulation_hours += $hours - $quran_hours;
                if ($key == $terms->count() - 2 && $terms->count() > 1) {
                    $student->term_previous = $term_average;
                    $student->accum_previous = $accumulation_hours ? number_format($accumulation_points / $accumulation_hours, 2) : 0;
                }
            }
            // $all_failed_subjects = array_diff($all_failed_subjects, $failed_subjects);
            $old_failed_subjects = array_diff(array_unique(array_diff($all_failed_subjects, $failed_subjects)), array_unique($all_passed_subjects));
            // dd($failed_subjects);
            $student->old_failed_subjects = count($old_failed_subjects);
            // end foreach terms
            if ($accumulation_hours) {
                $student->accumulation_average = number_format($accumulation_points / $accumulation_hours, 2);
            }
            $student->terms = $terms;
            $student->failed = $student->accumulation_average < 1.67 || $student->accum_previous < 2.0 && $student->accum_previous > 1.67 && ($student->accumulation_average < 2.0 && $student->accumulation_average > 1.67);
            $student->failed_subjects = count(array_unique($failed_subjects));
            $student->passed_subjects = count(array_unique($passed_subjects));
            if (semester()->order != 'summer' && count($old_failed_subjects) + count($failed_subjects) >= 4) {
                $student->failed = true;
            }
            if (semester()->order == 'summer') {
                $student->failed = false;
            }
        });
        $students = $students->filter(function ($student) use($request) {
            return $student->failed == ($request->input('status', 's') == 'r') ? 1 : 0;
        });
        return view('students::success.index', compact('years', 'students', 'statuses', 'semester'));
    }
示例#5
0
 /**
  * @desc Delete term
  * @param Term $term (get term from provider route model binding $router->model)
  * @redirect to term index with year_id
  **/
 public function delete(Term $term)
 {
     $term->delete();
     $year_id = $term->year_id;
     return redirect()->route('as.terms.index', [$year_id]);
 }