@@ -86,7 +86,14 @@ public function showAccessLog(Request $request)
8686
8787 self ::mapAdditionalDetails ($ activities );
8888
89- $ users = config ('LaravelLogger.defaultUserModel ' )::all ();
89+
90+ if (config ('LaravelLogger.enableLiveSearch ' )){
91+ // We are querying only the paginated userIds because in a big application querying all user data is performance heavy
92+ $ user_ids = array_unique ($ activities ->pluck ('userId ' )->toArray ());
93+ $ users = config ('LaravelLogger.defaultUserModel ' )::whereIn (config ('LaravelLogger.defaultUserIDField ' ), $ user_ids )->get ();
94+ }else {
95+ $ users = config ('LaravelLogger.defaultUserModel ' )::all ();
96+ }
9097
9198 $ data = [
9299 'activities ' => $ activities ,
@@ -305,5 +312,22 @@ public function searchActivityLog($query, $request)
305312 }
306313
307314 return $ query ;
308- }
315+ }
316+ /**
317+ * Search the database users according to specific criteria.
318+ *
319+ * @param request
320+ *
321+ * @return filtered user data
322+ */
323+ public function liveSearch (Request $ request ){
324+
325+ $ filteredUsers = config ('LaravelLogger.defaultUserModel ' )::when (request ('userid ' ), function ($ q ) {
326+ return $ q ->where (config ('LaravelLogger.defaultUserIDField ' ), (int ) request ('userid ' , 0 ));
327+ })->when (request ('email ' ), function ($ q ) {
328+ return $ q ->where ('email ' , 'like ' , '% ' . request ('email ' ) . '% ' );
329+ });
330+
331+ return response ()->json ($ filteredUsers ->get ()->pluck ('email ' , config ('LaravelLogger.defaultUserIDField ' )), 200 );
332+ }
309333}
0 commit comments