/home/techb158/ileadtechnology.com/SSM/app/Repositories/academic
NameSizeModeActions
AcademicSessionRepository.php204270644editdlrm
BatchRepository.php135570644editdlrm
CertificateRepository.php91290644editdlrm
ClassTeacherRepository.php98960644editdlrm
ClassTimingRepository.php104790644editdlrm
CourseRepository.php91480644editdlrm
SubjectRepository.php100790644editdlrm
SubjectTeacherRepository.php87270644editdlrm
TimetableRepository.php147950644editdlrm
Edit: /home/techb158/ileadtechnology.com/SSM/app/Repositories/academic/SubjectTeacherRepository.php (8727B)
subject_teacher = $subject_teacher; $this->batch = $batch; $this->subject = $subject; $this->employee = $employee; $this->designation = $designation; $this->course_group = $course_group; } /** * Find subject teacher with given id. * * @param integer $id * @return SubjectTeacher */ public function find($id) { return $this->subject_teacher->find($id); } /** * Find subject teacher with given id or throw an error. * * @param integer $id * @return SubjectTeacher */ public function findOrFail($id) { $subject_teacher = $this->subject_teacher->find($id); if (! $subject_teacher) { throw ValidationException::withMessages(['message' => trans('academic.could_not_find_subject_teacher')]); } return $subject_teacher; } /** * Get subject teacher list. * * @return Array */ public function getList() { $batches = $this->course_group->getBatchOption(); $employees = $this->getEmployeeQuery()->get()->pluck('name_with_code', 'id'); $subject_teachers = generateSelectOption($employees); return compact('batches', 'subject_teachers'); } /** * Get subjects for given batch id. * * @return Array */ public function getSubjects($batch_id = null) { $batch = $this->batch->filterBySession()->filterById($batch_id)->first(); if (! $batch) { throw ValidationException::withMessages(['batch_id' => trans('academic.could_not_find_batch')]); } return $this->subject->with(['subjectTeachers' => function ($q) { $q->orderBy('date_effective', 'desc'); }, 'subjectTeachers.employee'])->filterByBatchId($batch->id)->get(); } /** * Get batch detail for given batch id. * * @return Array */ public function getBatchDetail($batch_id = null) { return $this->batch->with('course', 'course.courseGroup')->filterBySession()->filterById($batch_id)->first(); } private function getEmployeeQuery($employee_id = null, $date = null) { $date = ($date) ? : date('Y-m-d'); $query = $employee_id ? $this->employee->whereId($employee_id) : $this->employee; return $query->whereHas('employeeTerms', function ($q) use ($date) { $q->where('date_of_joining', '<=', $date)->where(function ($q1) use ($date) { $q1->where('date_of_leaving', '=', null)->orWhere('date_of_leaving', '>=', $date); })->orderBy('date_of_joining', 'desc')->take(1); })->whereHas('employeeDesignations', function ($q) use ($date) { $q->where('date_effective', '<=', $date)->whereHas('designation', function ($q1) { $q1->where('is_teaching_employee', '=', 1); })->orderBy('date_effective', 'desc')->take(1); }); } /** * Create a new subject teacher. * * @param array $params * @return void */ public function store($params) { $this->validateInput($params); $subjects = gv($params, 'subjects', []); foreach ($subjects as $index => $subject) { if (gbv($subject, 'change')) { $this->subject_teacher->forceCreate([ 'subject_id' => gv($subject, 'subject_id'), 'employee_id' => gv($subject, 'employee_id'), 'date_effective' => toDate(gv($subject, 'date_effective')), 'description' => gv($subject, 'description'), 'options' => [] ]); } } return true; } /** * Validate input * * @param array $params * @return void */ public function validateInput($params) { $batch = $this->batch->filterBySession()->filterById(gv($params, 'batch_id'))->first(); if (! $batch) { throw ValidationException::withMessages(['batch_id' => trans('academic.could_not_find_batch')]); } $subjects = gv($params, 'subjects', []); if (! $subjects) { return; } $subject_ids = $this->subject->filterByBatchId($batch->id)->get()->pluck('id')->all(); $subject_teachers = $this->subject_teacher->whereIn('subject_id', $subject_ids)->get(); foreach ($subjects as $index => $subject) { $change = gbv($subject, 'change'); if (! $change) { continue; } $subject_id = gv($subject, 'subject_id'); if (! in_array($subject_id, $subject_ids)) { throw ValidationException::withMessages(['message' => trans('academic.could_not_find_subject')]); } $date_effective = toDate(gv($subject, 'date_effective')); if (! $date_effective) { throw ValidationException::withMessages([$index.'_date_effective' => trans('validation.required', ['attribute' => trans('academic.date_effective')])]); } if (! dateBetweenSession($date_effective)) { throw ValidationException::withMessages([$index.'_date_effective' => trans('academic.invalid_session_date_range')]); } $employee_id = gv($subject, 'employee_id'); if (! $employee_id) { throw ValidationException::withMessages([$index.'_employee_id' => trans('validation.required', ['attribute' => trans('employee.employee')])]); } if (! $this->getEmployeeQuery($employee_id, $date_effective)->first()) { throw ValidationException::withMessages([$index.'_employee_id' => trans('employee.invalid_employee_for_selected_date')]); } if ($subject_teachers->filter(function ($subject_teacher, $key) use ($date_effective, $subject_id) { return $subject_teacher->subject_id == $subject_id && $subject_teacher->date_effective >= toDate($date_effective); })->count()) { throw ValidationException::withMessages([$index.'_date_effective' => trans('academic.subject_teacher_exists_after_given_date')]); } $last_subject_teacher = $subject_teachers->where('subject_id', $subject_id)->sortByDesc('date_effective')->filter(function ($subject_teacher, $key) use ($date_effective) { return $subject_teacher->date_effective <= toDate($date_effective); })->first(); if ($employee_id == optional($last_subject_teacher)->employee_id) { throw ValidationException::withMessages([$index.'_employee_id' => trans('academic.same_as_previous_subject_teacher')]); } } } /** * Find subject teacher & check it can be deleted or not. * * @param integer $id * @return SubjectTeacher */ public function deletable($id) { $subject_teacher = $this->findOrFail($id); if ($this->subject_teacher->filterBySubjectId($subject_teacher->subject_id)->where('date_effective', '>', $subject_teacher->date_effective)->count()) { throw ValidationException::withMessages(['message' => trans('academic.latest_subject_teacher_can_be_deleted')]); } return $subject_teacher; } /** * Delete subject teacher. * * @param integer $id * @return bool|null */ public function delete(SubjectTeacher $subject_teacher) { return $subject_teacher->delete(); } /** * Delete multiple subject teachers. * * @param array $ids * @return bool|null */ public function deleteMultiple($ids) { return $this->subject_teacher->whereIn('id', $ids)->delete(); } }