/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/ExamRepository.php (7868B)
exam = $exam; $this->exam_term = $exam_term; } /** * Get exam query * * @return Exam query */ public function getQuery() { return $this->exam; } /** * Count exam * * @return integer */ public function count() { return $this->exam->filterBySession()->count(); } /** * List all exams by name & id * * @return array */ public function listAll() { return $this->exam->filterBySession()->get()->pluck('name', 'id')->all(); } /** * List all exams by name & id for select option * * @return array */ public function selectAll() { // return $this->exam->filterBySession()->get(['name', 'id']); $exams = $this->exam->summary()->filterBySession()->get(); $data = array(); foreach ($exams as $exam) { $exam_name = $exam->name; if ($exam->exam_term_id) { $exam_name .= ' ('.$exam->term->courseGroup->name.')'; } $data[] = array( 'id' => $exam->id, 'name' => $exam_name, 'course_group_id' => $exam->exam_term_id ? $exam->term->course_group_id : null, 'course_group_name' => $exam->exam_term_id ? $exam->term->courseGroup->name : null, ); } return $data; } /** * List all exams by id * * @return array */ public function listId() { return $this->exam->filterBySession()->get()->pluck('id')->all(); } /** * Get all exams * * @return array */ public function getAll() { return $this->exam->filterBySession()->get(); } /** * Find exam with given id. * * @param integer $id * @return Exam */ public function find($id) { return $this->exam->info()->filterBySession()->filterById($id)->first(); } /** * Find exam with given id or throw an error. * * @param integer $id * @return Exam */ public function findOrFail($id, $field = 'message') { $exam = $this->exam->info()->filterBySession()->filterById($id)->first(); if (! $exam) { throw ValidationException::withMessages([$field => trans('exam.could_not_find')]); } return $exam; } /** * Get all filtered data * * @param array $params * @return Exam */ public function getData($params) { $sort_by = gv($params, 'sort_by', 'position'); $order = gv($params, 'order', 'asc'); $name = gv($params, 'name'); $query = $this->exam->info()->filterBySession()->filterByName($name); return $query->orderBy($sort_by, $order); } /** * Paginate all exams using given params. * * @param array $params * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator */ public function paginate($params) { $page_length = gv($params, 'page_length', config('config.page_length')); return $this->getData($params)->paginate($page_length); } /** * Get all filtered data for printing * * @param array $params * @return Exam */ public function print($params) { return $this->getData($params)->get(); } /** * Get exam pre requisite. * * @return Array */ public function getPreRequisite() { $exam_terms = $this->exam_term->selectAll(); return compact('exam_terms'); } /** * Create a new exam. * * @param array $params * @return Exam */ public function create($params) { return $this->exam->forceCreate($this->formatParams($params)); } /** * Prepare given params for inserting into database. * * @param array $params * @param string $type * @return array */ private function formatParams($params, $exam_id = null) { $name = gv($params, 'name'); $description = gv($params, 'description'); $exam_term_id = gv($params, 'exam_term_id'); if ($exam_term_id) { $exam_term = $this->exam_term->findOrFail($exam_term_id); } $query = (! $exam_id) ? $this->exam->whereExamTermId($exam_term_id) : $this->exam->whereExamTermId($exam_term_id)->where('id', '!=', $exam_id); $exam_exists = $query->filterByName($name, 1)->filterBySession()->count(); if ($exam_exists) { throw ValidationException::withMessages(['name' => trans('exam.exam_exists')]); } $formatted = [ 'exam_term_id' => $exam_term_id, 'name' => $name, 'description' => $description, 'options' => [] ]; if (! $exam_id) { $formatted['academic_session_id'] = config('config.default_academic_session.id'); } return $formatted; } /** * Update given exam. * * @param Exam $exam * @param array $params * * @return Exam */ public function update(Exam $exam, $params) { $exam_term_id = gv($params, 'exam_term_id'); if ($exam_term_id && $exam->exam_term_id != $exam_term_id) { $exam_term = $this->exam_term->findOrFail($exam_term_id); $course_group_id = $exam_term->course_group_id; $other_course_group_exam_schedules = $this->exam->whereId($exam->id)->whereHas('schedules', function($q0) use($course_group_id) { $q0->whereHas('batch', function($q) use($course_group_id) { $q->whereHas('course', function($q1) use($course_group_id) { $q1->where('course_group_id', '!=', $course_group_id); }); }); })->count(); if ($other_course_group_exam_schedules) { throw ValidationException::withMessages(['message' => trans('exam.exam_has_schedules_of_different_course_group')]); } } return $exam->forceFill($this->formatParams($params, $exam->id))->save(); } /** * Reorder all exam * * @param array $params */ public function reorder($params) { $list = gv($params, 'list', []); foreach ($list as $index => $item) { $exam = $this->exam->filterBySession()->filterByName($item, 1)->first(); $exam->position = $index; $exam->save(); } } /** * Find exam & check it can be deleted or not. * * @param integer $id * @return Exam */ public function deletable($id) { $exam = $this->findOrFail($id); if ($exam->schedules()->count()) { throw ValidationException::withMessages(['message' => trans('exam.exam_associated_with_exam_schedule')]); } return $exam; } /** * Delete exam. * * @param integer $id * @return bool|null */ public function delete(Exam $exam) { return $exam->delete(); } /** * Delete multiple exams. * * @param array $ids * @return bool|null */ public function deleteMultiple($ids) { return $this->exam->whereIn('id', $ids)->delete(); } }