filters = $filters; } /** * @return \Illuminate\Support\Collection */ public function collection() { return Document::with(['pet', 'requester'])->when(isset($this->filters['search']) , function ($query){ $query->where(function ($q){ $q->where('code', 'LIKE', "%{$this->filters['search']}%") ->orWhere('id', $this->filters['search']) ->orWhereHas('requester', function ($userQuery) { $userQuery->where('fullname', 'LIKE', "%{$this->filters['search']}%") ->orWhere('username', 'LIKE', "%{$this->filters['search']}%") ->orWhere('email', 'LIKE', "%{$this->filters['search']}%") ->orWhere('phone', 'LIKE', "%{$this->filters['search']}%"); }); }); }) ->when(isset($this->filters['status']), function ($query) { $query->where('status' , DocumentStatusEnum::fromName($this->filters['status'])->value ); }) ->when(isset($this->filters['priority']), function ($query) { $query->where('priority' , DocumentPriorityEnum::fromName($this->filters['priority'])->value); }) ->when(isset($this->filters['pet']), function ($query) { $query->where('pet_id' , $this->filters['pet']); }) ->latest() ->get(); } }