/home/techb158/ileadtechnology.com/SSM/app/Repositories/exam
NameSizeModeActions
ExamRepository.php78680644editdlrm
OnlineExamRepository.php272810644editdlrm
RecordRepository.php178300644editdlrm
ReportAnalysisRepository.php123070644editdlrm
ReportRepository.php399860644editdlrm
ScheduleRepository.php150910644editdlrm
Edit: /home/techb158/ileadtechnology.com/SSM/app/Repositories/exam/ReportAnalysisRepository.php (12307B)
course_group = $course_group; $this->exam_assessment = $exam_assessment; $this->exam_grade = $exam_grade; $this->subject_teacher = $subject_teacher; $this->student_record = $student_record; $this->course_group_repository = $course_group_repository; $this->exam = $exam; } /** * Get pre requisite * @return array */ public function getPreRequisite() { $course_groups = $this->course_group_repository->selectAll(); $batches = $this->course_group_repository->getBatchOption(); $exams = $this->exam->selectAll(); $types = array( array('text' => 'Course Group Wise', 'value' => 'course-group-wise'), array('text' => 'Batch Wise', 'value' => 'batch-wise'), array('text' => 'Exam Wise', 'value' => 'exam-wise') ); $employee_code = null; $students = []; if (\Auth::user()->hasAnyRole([ config('system.default_role.admin'), config('system.default_role.principal'), config('system.default_role.manager'), ])) { } else if (\Auth::user()->hasRole(config('system.default_role.student'))) { $student = \Auth::user()->Student; $student_records = $this->student_record->with('admission', 'batch', 'batch.course')->whereStudentId($student->id)->filterBySession()->whereNull('date_of_exit')->get(); foreach ($student_records as $student_record) { array_push($students, array( 'name' => $student->name, 'batch' => $student_record->batch->course->name.' '.$student_record->batch->name, 'admission_number' => $student_record->admission->admission_number )); } } else if (\Auth::user()->hasRole(config('system.default_role.parent'))) { $student_ids = \Auth::user()->Parent->Students->pluck('id')->all();; $student_records = $this->student_record->with('admission','student','batch','batch.course')->whereIn('student_id', $student_ids)->filterBySession()->whereNull('date_of_exit')->get(); foreach ($student_records as $student_record) { array_push($students, array( 'id' => Str::random(10), 'name' => $student_record->student->name, 'batch' => $student_record->batch->course->name.' '.$student_record->batch->name, 'admission_number' => $student_record->admission->admission_number )); } } else { $employee_code = \Auth::user()->Employee->employee_code; } return compact('course_groups', 'batches', 'exams', 'types', 'employee_code', 'students'); } /** * Export exam report * * @return Array */ public function export() { if (! config('config.default_academic_session.options.exam_report_analysis')) { throw ValidationException::withMessages(['message' => trans('general.invalid_action')]); } $type = request('type'); if (! in_array($type, ['course-group-wise', 'batch-wise', 'exam-wise'])) { throw ValidationException::withMessages(['message' => trans('general.invalid_action')]); } $batch_id = request('batch_id'); $batch_id = is_array($batch_id) ? $batch_id : ($batch_id ? explode(',', $batch_id) : []); $course_groups = $this->course_group->with([ 'courses', 'courses.batches' => function($q) use($batch_id) { if (request('type') === 'batch-wise') { $q->whereIn('id', $batch_id)->orderBy('position','asc'); } else { $q->orderBy('position','asc'); } } , 'courses.batches.schedules' => function($q) { if (request('type') === 'exam-wise') { $q->where('exam_id', request('exam_id')); } else { $q->where('exam_id','!=',null); } }, 'courses.batches.schedules.exam', 'courses.batches.schedules.exam.term', 'courses.batches.schedules.records', 'courses.batches.schedules.records.subject', ])->filterBySession()->when($type, function($query, $type) { if ($type === 'course-group-wise') { $course_group_id = request('course_group_id'); $course_group_id = is_array($course_group_id) ? $course_group_id : ($course_group_id ? explode(',', $course_group_id) : []); return $query->whereIn('id', $course_group_id); } })->get(); $student_records = $this->student_record->with('student','admission')->filterBySession()->get(); $subject_teachers = $this->subject_teacher->with('employee')->where('date_effective', '>=', config('config.default_academic_session.start_date'))->where('date_effective', '<=', config('config.default_academic_session.end_date'))->orderBy('date_effective', 'desc')->get(); $exam_assessments = $this->exam_assessment->with('details')->filterBySession()->get(); $exam_grades = $this->exam_grade->with('details')->filterBySession()->get(); $data = array(); array_push($data, array( 'Session', 'School', 'Compartment', 'Term', 'Exam', 'Class', 'Section', 'Teacher', 'Teacher Code', 'Subject', 'Subject Group', 'Admission No', 'Roll No', 'Student Name', 'Mark', 'Grade', 'Leave' )); foreach ($course_groups as $course_group) { foreach ($course_group->courses as $course) { foreach ($course->batches as $batch) { $batch_student_records = $student_records->where('batch_id', $batch->id); foreach($batch->schedules as $schedule) { $exam_assessment = $exam_assessments->firstWhere('id', $schedule->exam_assessment_id); $exam_grade = $exam_grades->firstWhere('id', $schedule->exam_grade_id); $exam_term_name = $schedule->exam->exam_term_id ? $schedule->exam->term->name : ''; $exam_name = $schedule->exam ? $schedule->exam->name : ''; foreach ($schedule->records as $record) { $marks = $record->marks ? : []; $subject_name = $record->subject->name; $subject_group = $record->subject->getOption('group') ? : $record->subject->name; if ($record->date) { $subject_teacher = $subject_teachers->where('date_effective','<=',$record->date)->where('subject_id', $record->subject_id)->first(); $subject_teacher_name = $subject_teacher ? $subject_teacher->employee->name : ''; $subject_teacher_code = $subject_teacher ? $subject_teacher->employee->employee_code : ''; } else { $subject_teacher_name = ''; $subject_teacher_code = ''; } foreach ($marks as $mark) { $row = array(); array_push($row, config('config.default_academic_session.name')); array_push($row, config('config.institute_name')); array_push($row, $course_group->name); array_push($row, $exam_term_name); array_push($row, $exam_name); array_push($row, $course->name); array_push($row, $batch->name); array_push($row, $subject_teacher_name); array_push($row, $subject_teacher_code); array_push($row, $subject_name); array_push($row, $subject_group); $student_record_id = gv($mark, 'id'); $student_record = $batch_student_records->firstWhere('id', $student_record_id); if (! $student_record) { continue; } $student_name = $student_record->student->name; $student_admission_number = $student_record->admission->admission_number; $student_roll_number = $student_record->full_roll_number; array_push($row, $student_admission_number); array_push($row, $student_roll_number); array_push($row, $student_name); $is_absent = gbv($mark, 'is_absent'); if (! $is_absent) { $mark_assessment_details = gv($mark, 'assessment_details', []); $obtained_mark = 0; $max_mark = 0; foreach ($mark_assessment_details as $mark_assessment_detail) { $exam_assessment_detail = $exam_assessment->details->firstWhere('id', gv($mark_assessment_detail, 'id')); $max_mark += $exam_assessment_detail ? $exam_assessment_detail->max_mark : 0; $obtained_mark += is_numeric(gv($mark_assessment_detail, 'ob')) ? gv($mark_assessment_detail, 'ob') : 0; } $percentage = $max_mark ? round((($obtained_mark/$max_mark) * 100), 2) : 0; $exam_grade_detail = $exam_grade ? $exam_grade->details->where('min_percentage','<=',$percentage)->where('max_percentage','>=',$percentage)->first() : null; $grade = $exam_grade_detail ? $exam_grade_detail->name : ''; array_push($row, $percentage); array_push($row, $grade); array_push($row, ''); } else { array_push($row, ''); array_push($row, ''); array_push($row, 'Yes'); } $data[] = $row; } } } } } } return $data; } }