77use Illuminate \Http \Request ;
88use Illuminate \Http \RedirectResponse ;
99use \Illuminate \Contracts \View \View ;
10+ use \App \Models \User ;
1011
1112/**
1213 * This controller handles all actions related to User Groups for
@@ -43,14 +44,20 @@ public function create(Request $request) : View
4344 $ permissions = config ('permissions ' );
4445 $ groupPermissions = Helper::selectedPermissionsArray ($ permissions , $ permissions );
4546 $ selectedPermissions = $ request ->old ('permissions ' , $ groupPermissions );
46- $ users = \App \Models \User::orderBy ('first_name ' , 'asc ' )->orderBy ('last_name ' , 'asc ' )->get ();
47+ $ users_query = User::where ('show_in_list ' , 1 )->whereNull ('deleted_at ' );
48+ $ users_count = $ users_query ->count ();
49+
50+ $ users = collect ();
51+ if ($ users_count <= config ('app.max_unpaginated_records ' )) {
52+ $ users = $ users_query ->orderBy ('first_name ' , 'asc ' )->orderBy ('last_name ' , 'asc ' )->get ();
53+ }
54+
4755 // Show the page
4856 return view ('groups/edit ' , compact ('permissions ' , 'selectedPermissions ' , 'groupPermissions ' ))
4957 ->with ('group ' , $ group )
5058 ->with ('associated_users ' , [])
5159 ->with ('unselected_users ' , $ users )
52- ->with ('all_users_count ' , $ users ->count ())
53- ;
60+ ->with ('all_users_count ' , $ users_count );
5461 }
5562
5663 /**
@@ -104,19 +111,26 @@ public function edit(Group $group) : View | RedirectResponse
104111 if ((!is_array ($ groupPermissions )) || (!$ groupPermissions )) {
105112 $ groupPermissions = [];
106113 }
114+
107115 $ selected_array = Helper::selectedPermissionsArray ($ permissions , $ groupPermissions );
108- $ associated_users = $ group ->users ()->orderBy ('first_name ' , 'asc ' )->orderBy ('last_name ' , 'asc ' )->get ();
109116
110- // Get the unselected users
111- $ unselected_users = \App \Models \User::whereNotIn ('id ' , $ associated_users ->pluck ('id ' )->toArray ())->orderBy ('first_name ' , 'asc ' )->orderBy ('last_name ' , 'asc ' )->get ();
112117
113- // We need the total to see whether or not we should show the user selection box :(
114- $ all_users_count = $ associated_users ->count () + $ unselected_users ->count ();
118+ $ users_query = User::where ('show_in_list ' , 1 )->whereNull ('deleted_at ' );
119+ $ users_count = $ users_query ->count ();
120+
121+ $ associated_users = collect ();
122+ $ unselected_users = collect ();
123+
124+ if ($ users_count <= config ('app.max_unpaginated_records ' )) {
125+ $ associated_users = $ group ->users ()->where ('show_in_list ' , 1 )->orderBy ('first_name ' , 'asc ' )->orderBy ('last_name ' , 'asc ' )->get ();
126+ // Get the unselected users
127+ $ unselected_users = User::where ('show_in_list ' , 1 )->whereNotIn ('id ' , $ associated_users ->pluck ('id ' )->toArray ())->orderBy ('first_name ' , 'asc ' )->orderBy ('last_name ' , 'asc ' )->get ();
128+ }
115129
116130 return view ('groups.edit ' , compact ('group ' , 'permissions ' , 'selected_array ' , 'groupPermissions ' ))
117131 ->with ('associated_users ' , $ associated_users )
118132 ->with ('unselected_users ' , $ unselected_users )
119- ->with ('all_users_count ' , $ all_users_count );
133+ ->with ('all_users_count ' , $ users_count );
120134 }
121135
122136 /**
@@ -143,7 +157,7 @@ public function update(Request $request, Group $group) : RedirectResponse
143157 if (! config ('app.lock_passwords ' )) {
144158 if ($ group ->save ()) {
145159
146- if ($ request ->filled ('users_to_sync ' )) {
160+ if ($ request ->has ('users_to_sync ' )) {
147161 $ associated_users = explode (', ' ,$ request ->input ('users_to_sync ' ));
148162 $ group ->users ()->sync ($ associated_users );
149163 }
0 commit comments