request = \request(); } else { $this->request = $request; } } /** * Apply criteria in query repository * * @param string $model * @param RepositoryInterface $repository * * @return mixed */ public function apply($model, RepositoryInterface $repository) { if ($this->request->filled('teach_title')) { $teach_title = $this->request->get('teach_title'); $model = $model->where('teach_title', 'like', "%{$teach_title}%"); } if ($this->request->filled('term_id')) { $term_id = $this->request->get('term_id'); $model = $model->where('term_id', '=', $term_id); } if ($this->request->filled('lesson_teacher_id')) { $lesson_teacher_id = $this->request->get('lesson_teacher_id'); $model = $model->where('lesson_teacher_id', '=', $lesson_teacher_id); } if ($this->request->filled('week')) { $week = $this->request->get('week'); $model = $model->where('week', '=', $week); } if ($this->request->filled('time_id')) { $time_id = $this->request->get('time_id'); $model = $model->where('time_id', '=', $time_id); } if ($this->request->filled('day')) { $day = $this->request->get('day'); $model = $model->where('day', '=', $day); } if ($this->request->filled('week_index')) { $week_index = $this->request->get('week_index'); $model = $model->where('week_index', '=', $week_index); } if ($this->request->filled('lesson_id')) { $lesson_id = $this->request->get('lesson_id'); $model = $model->where('lesson_id', '=', $lesson_id); } if ($this->request->filled('lesson_name')) { $lesson_name = $this->request->get('lesson_name'); $model = $model->whereHas('lesson', function ($query) use ($lesson_name) { return $query->where('name', 'like', "%{$lesson_name}%"); }); } if ($this->request->filled('grade_id')) { $grade_id = $this->request->get('grade_id'); $model = $model->where('grade_id', '=', $grade_id); } if ($this->request->filled('grade_name')) { $grade_name = $this->request->get('grade_name'); $model = $model->whereHas('grade', function ($query) use ($grade_name) { return $query->where('name', 'like', "%{$grade_name}%"); }); } if ($this->request->filled('room_id')) { $room_id = $this->request->get('room_id'); $model = $model->where('room_id', '=', $room_id); } if ($this->request->filled('teacher_id')) { $teacher_id = $this->request->get('teacher_id'); $model = $model->where('teacher_id', '=', $teacher_id); } if ($this->request->filled('teacher_name')) { $teacher_name = $this->request->get('teacher_name'); $model = $model->whereHas('teacher', function ($query) use ($teacher_name) { return $query->where('name', 'like', "%{$teacher_name}%"); }); } if ($this->request->filled('status')) { $status = $this->request->get('status'); if ($status == 4) { $model = $model->where('status', '=', ModelStatusEnum::OK)->where('migrate_id', '>', 0); } else { $model = $model->where('status', '=', $status); } } $model = $model->where('term_id', $this->request->header('term-id')); $model = $model->orderByDesc('day')->where('type', ScheduleTypeEnum::LESSON); //权限控制 $admin = login_admin(); $source = getControllerAndFunction(); $controller = $source['controller']; $method = $source['method']; if (!$admin->can(PermissionEnum::model_schedule_all) && !in_array($method, ['show'])) { //教师 if ($admin->can(PermissionEnum::model_schedule_me)) { $model = $model->where('teacher_admin_id', $admin['id']); } } return $model; } }