function ($query) { $query->select('id', 'name', 'address', 'phone_number'); }, 'items' ]) ->tap(function ($query) use ($request) { $this->applyUserNameFilter($query, $request); }) ->when($request->has('name') && $request->name != '', function ($query) use ($request) { $query->where('name', 'LIKE', '%'.$request->name.'%'); }) ->when($request->has('package_id') && $request->package_id != '', function ($query) use ($request) { $query->where('id', $request->package_id); }) ->when($request->has('medical_center_id') && $request->medical_center_id != '' && $request->medical_center_id != 'undefined', function ($query) use ($request) { $query->whereHas('user', function ($query) use ($request) { $query->where('medical_center_id', $request->medical_center_id); }); }) ->whereHas('user', function ($query) use ($user) { $query->where('users.medical_center_id', $user->medical_center_id); }) // ->where("status", StatusTypeEnum::APPROVED) ->orderByDesc('id') ->paginate(10); } public function indexForSupervisor($request, $user) { return Package::with([ 'user', 'user.medical_center' => function ($query) { $query->select('id', 'name', 'address', 'phone_number'); }, 'items' ]) ->tap(function ($query) use ($request) { $this->applyUserNameFilter($query, $request); }) ->when($request->has('name') && $request->name != '', function ($query) use ($request) { $query->where('name', 'LIKE', '%'.$request->name.'%'); }) ->when($request->has('package_id') && $request->package_id != '', function ($query) use ($request) { $query->where('id', $request->package_id); }) ->when($request->has('medical_center_id') && $request->medical_center_id != '' && $request->medical_center_id != 'undefined', function ($query) use ($request) { $query->whereHas('user', function ($query) use ($request) { $query->where('medical_center_id', $request->medical_center_id); }); }) ->whereHas('user', function ($query) use ($user) { $query->where('users.medical_center_id', $user->medical_center_id); }) ->orderByDesc('id') ->paginate(10); } public function indexForAdmin($request, $user) { return Package::with([ 'user', 'user.medical_center' => function ($query) { $query->select('id', 'name', 'address', 'phone_number'); }, 'items' ]) ->tap(function ($query) use ($request) { $this->applyUserNameFilter($query, $request); }) ->when($request->has('name') && $request->name != '', function ($query) use ($request) { $query->where('name', 'LIKE', '%'.$request->name.'%'); }) ->when($request->has('package_id') && $request->package_id != '', function ($query) use ($request) { $query->where('id', $request->package_id); }) ->when($request->has('medical_center_id') && $request->medical_center_id != '' && $request->medical_center_id != 'undefined', function ($query) use ($request) { $query->whereHas('user', function ($query) use ($request) { $query->where('medical_center_id', $request->medical_center_id); }); }) ->orderByDesc('id') ->paginate(10); } private function applyUserNameFilter($queryBuilder,$request){ return $queryBuilder->when($request->filled('user_name'), function ($query) use ($request) { $query->whereHas('user', function ($q) use ($request) { $q->where('users.name', 'LIKE', '%' . $request->user_name . '%'); }); }); } }