From cfc1d1038bae7979656932ecd1c77c9018de9660 Mon Sep 17 00:00:00 2001 From: miguel456 Date: Fri, 21 Oct 2022 08:17:45 +0100 Subject: [PATCH] refactor: remove n+1 query from application admin notification Signed-off-by: miguel456 --- app/Http/Controllers/UserController.php | 2 +- app/Services/ApplicationService.php | 11 ++++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 137a8d3..e2c1469 100755 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -534,7 +534,7 @@ class UserController extends Controller * @return \Illuminate\Http\RedirectResponse */ public function reset2FASecret(Reset2FASecretRequest $request, User $user) { - + // note: could invalidate other sessions for increased security if ($user->has2FA()) { Log::warning('SECURITY: Disabling two factor authentication (admin initiated)', [ 'initiator' => $request->user()->email, diff --git a/app/Services/ApplicationService.php b/app/Services/ApplicationService.php index 27ef2e9..6401fe9 100755 --- a/app/Services/ApplicationService.php +++ b/app/Services/ApplicationService.php @@ -94,11 +94,12 @@ class ApplicationService 'applicant' => $applicant->name ]); - foreach (User::all() as $user) { - if ($user->hasRole('admin')) { - $user->notify((new NewApplicant($application, $vacancy->first()))); - } - } + User::whereHas('roles', function ($q) { + $q->where('name', 'admin'); + })->get()->each(function ($user, $key) use ($application, $vacancy) { + $user->notify((new NewApplicant($application, $vacancy->first()))); + }); + $application->user->notify(new ApplicationConfirmed($application)); return true;