request = $request; } /** * @param $model * @param RepositoryInterface $repository * * @return mixed */ public function apply($model, RepositoryInterface $repository) { if ($this->request->filled('name')) { $model = $model->where('name', 'like', '%' . $this->request->get('name') . '%'); } if ($this->request->filled('grade_id')) { $grade_id = $this->request->get('grade_id'); $model = $model->whereHas('models', function ($query) use ($grade_id) { return $query->where('mentor_grades.id', $grade_id); }); } if ($this->request->filled('status')) { $model = $model->where('status', '=', $this->request->get('status')); } if (!$this->request->filled('orderBy')) { $model = $model->orderByDesc('id'); } $admin = login_admin(); if ($admin && !$admin->hasRole('admin')) { $grade_id = Student::query()->where('admin_id', $admin['id'])->value('grade_id') ?? 0; $model = $model->whereHas('models', function ($query) use ($grade_id) { return $query->where('mentor_grades.id', $grade_id); })->where('status', ModelStatusEnum::OK); } return $model; } }