request = $request; } public function apply($builder) { $this->queryBuilder = $builder; $filters = array_filter($this->request->only($this->filters)); foreach ($filters as $filter => $value) { if (method_exists($this, $filter)) { $this->$filter($value, $this->queryBuilder); } } return $this->queryBuilder; } public function creator($creator) { $this->queryBuilder->where('user_id', $creator); } private function worker_ids($worker_ids) { if (strpos($worker_ids, ',') || strpos($worker_ids, ',') || strpos($worker_ids, ' ')) { $arr = array_filter(preg_split('/[,, ]+/is', $worker_ids)); $this->queryBuilder->whereIn('id', RequirementUser::query()->select('requirement_id')->whereIn('user_id', $arr)); } else { $this->queryBuilder->whereIn('id', RequirementUser::query()->select('requirement_id')->where('user_id', $worker_ids)); } } public function began_at_start($began_at_start) { $this->queryBuilder->where('begin_at', '>=', \Carbon\Carbon::parse($began_at_start)->startOfDay()); } public function began_at_end($began_at_end) { $this->queryBuilder->where('begin_at', '<=', \Carbon\Carbon::parse($began_at_end)->endOfDay()); } public function finished_at_start($finished_at_start) { $this->queryBuilder->where('finished_at', '>=', \Carbon\Carbon::parse($finished_at_start)->startOfDay()); } public function finished_at_end($finished_at_end) { $this->queryBuilder->where('finished_at', '<=', \Carbon\Carbon::parse($finished_at_end)->endOfDay()); } public function created_at_start($created_at_start) { $this->queryBuilder->where('created_at', '>=', \Carbon\Carbon::parse($created_at_start)->startOfDay()); } public function created_at_end($created_at_end) { $this->queryBuilder->where('created_at', '<=', \Carbon\Carbon::parse($created_at_end)->endOfDay()); } public function title($title) { $this->queryBuilder->where('title', 'like', $title.'%'); } // 'requirement_id', // 'status' public function status($status) { $this->queryBuilder->where('status', Requirement::$enums['status'][$status]); } public function requirement($requirement) { $this->queryBuilder->where('id', $requirement); } }