filled('setting')) { $roleSetting = InvoiceSetting::query() ->where('name', 'roles') ->first(); } $users = StudioPlusUser::query() ->whereHas('role', fn ($query) => $query->where('type', '!=', 'superadmin')->when($request->filled('setting') && $roleSetting, fn ($query) => $query->whereIn('id', json_decode($roleSetting->value)))) //->when(!in_array(auth()->user()->role->type, ['superadmin', 'admin']), fn ($query) => $query->where('parent_id', auth()->id())) ->when(!in_array(auth()->user()->role->type, ['superadmin', 'admin']), function ($query) { if (!permissionCheck('studio-plus.can_view_all_videos')) { $query->where('parent_id', auth()->id())->orWhere('id', auth()->id()); } }) ->when($request->filled('team_leader_id'), fn ($query) => $query->where('parent_id', $request->team_leader_id)->orWhere('id', $request->team_leader_id)) ->when($request->filled('leaders'), function($query) use($request) { $query->whereIn('parent_id', $request->leaders); }) ->when($request->filled('search'), fn ($query) => $query->where(fn ($query) => $query->where('first_name', 'LIKE', "%{$request->search}%")->orWhere('last_name', 'LIKE', "%{$request->search}%"))) ->when($request->filled('order'), function($query) use($request) { $query->orderBy('first_name', $request->order)->orderBy('last_name', $request->order); }) ->where('is_active', true) ->getOrPaginate($request->per_page); return UserResource::collection($users); } public function teamLeaders(Request $request) { if ($request->filled('setting')) { $roleSetting = InvoiceSetting::query() ->where('name', 'roles') ->first(); } $users = StudioPlusUser::whereHas('role', fn ($query) => $query->where('type', '!=', 'superadmin')->when($request->filled('setting') && $roleSetting, fn ($query) => $query->whereIn('id', json_decode($roleSetting->value)))) ->when(!in_array(auth()->user()->role->type, ['superadmin', 'admin']), function ($query) { if (permissionCheck('studioplus.manage.creators')) { $query->where('parent_id', auth()->id()); } }) ->whereHas('role', function($query) { $query->whereHas('permissions', function($query) { $query->where('route', 'mlm-downline.index'); }); }) ->when($request->filled('order'), function($query) use($request) { $query->orderBy('first_name', $request->order)->orderBy('last_name', $request->order); }) ->where('is_active', true) ->get(); return UserResource::collection($users); } public function export() { return Excel::download(new UsersExport, 'users.xlsx'); } }