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('admin_id')) { $model = $model->where('admin_id', '=', $this->request->get('admin_id')); } if ($this->request->filled('paper_id')) { $model = $model->where('paper_id', '=', $this->request->get('paper_id')); } if ($this->request->filled('mark')) { $marks = $this->request->get('mark'); if (is_array($marks)) { $model = $model->where('mark', '>=', $marks[0])->where('mark', '<=', $marks[1]); } else { $model = $model->where('mark', '=', $marks); } } if ($this->request->filled('paper_name')) { $paper_name = $this->request->get('paper_name'); $model = $model->whereHas('paper', function ($query) use ($paper_name) { return $query->where('name', 'like', "%{$paper_name}%"); }); } if ($this->request->filled('grade_id')) { $grade_id = $this->request->get('grade_id'); $model = $model->whereHas('admin', function ($query) use ($grade_id) { return $query->where('shop_id', '=', $grade_id); }); } if ($this->request->filled('admin_username')) { $username = $this->request->get('admin_username'); $model = $model->whereHas('admin', function ($query) use ($username) { return $query->where('username', 'like', '%' . $username); }); } if ($this->request->filled('admin_name')) { $username = $this->request->get('admin_name'); $model = $model->whereHas('admin', function ($query) use ($username) { return $query->where('name', 'like', '%' . $username . '%'); }); } 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')) { $model = $model->where('admin_id', $admin['id']); } return $model; } }