From cabb9f07672bab04d30a4dd2f2572d3fa8d549b6 Mon Sep 17 00:00:00 2001 From: "LDFOUR\\luisd" Date: Fri, 6 Jun 2025 12:12:02 -0300 Subject: [PATCH 1/2] Implemented bulk email sending by chunks for terms and conditions alert --- .../Controllers/Terms/TermsController.php | 28 +++++++++++-------- app/Repositories/Access/UserRepository.php | 15 ++++++---- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/app/Http/Controllers/Terms/TermsController.php b/app/Http/Controllers/Terms/TermsController.php index 1185ff9..9b4f46e 100644 --- a/app/Http/Controllers/Terms/TermsController.php +++ b/app/Http/Controllers/Terms/TermsController.php @@ -152,18 +152,22 @@ public function create(Request $request): JsonResponse $terms = $this->terms->create((string) $request->get('version'), $request->get('content'), auth()->user()->id); - $users = $this->users->allNotifiablePublicUsers(); - $emails = $users->pluck('email')->implode(','); - $route = route('login'); - $subject = trans('terms.email.subject', ['app_name' => config('app.name')]); - $html = $this->mailApiService->buildTermsAndConditionsTemplate($route); - - $this->mailApiService->sendMail( - $emails, - $subject, - $html, - true, // Send as bulk email - ); + // $users = $this->users->allNotifiablePublicUsers(); + // $route = route('login'); + // $subject = trans('terms.email.subject', ['app_name' => config('app.name')]); + // $html = $this->mailApiService->buildTermsAndConditionsTemplate($route); + + // $users->pluck('email') + // ->chunk(25) + // ->each(function ($emailChunk) use ($subject, $html) { + // $emails = $emailChunk->implode(','); + // $this->mailApiService->sendMail( + // $emails, + // $subject, + // $html, + // true + // ); + // }); return TermsResource::make($terms)->response()->setStatusCode(JsonResponse::HTTP_CREATED); diff --git a/app/Repositories/Access/UserRepository.php b/app/Repositories/Access/UserRepository.php index d83219a..73356a2 100644 --- a/app/Repositories/Access/UserRepository.php +++ b/app/Repositories/Access/UserRepository.php @@ -237,10 +237,15 @@ public function reactivate(User $user) public function allNotifiablePublicUsers() { - return $this->query()->whereHas('roles', function ($query) { - $query->where('all', '=', 0); - $query->doesntHave('permissions'); })->whereHas('userProfile', function ($query) { - $query->where('notifications_enabled', '=', 1); - })->get(); + return $this->query() + ->where('activated', true) + ->whereHas('roles', function ($query) { + $query->where('all', '=', 0) + ->doesntHave('permissions'); + }) + ->whereHas('userProfile', function ($query) { + $query->where('notifications_enabled', '=', 1); + }) + ->get(); } } From 471ffa0f9046648db255b09441c2be7bead7049e Mon Sep 17 00:00:00 2001 From: "LDFOUR\\luisd" Date: Fri, 6 Jun 2025 12:16:47 -0300 Subject: [PATCH 2/2] fix terms and conditions link --- app/Http/Controllers/Terms/TermsController.php | 1 + resources/assets/js/components/App.vue | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Terms/TermsController.php b/app/Http/Controllers/Terms/TermsController.php index 9b4f46e..f27172b 100644 --- a/app/Http/Controllers/Terms/TermsController.php +++ b/app/Http/Controllers/Terms/TermsController.php @@ -152,6 +152,7 @@ public function create(Request $request): JsonResponse $terms = $this->terms->create((string) $request->get('version'), $request->get('content'), auth()->user()->id); + // commented out to avoid sending emails on every terms update // $users = $this->users->allNotifiablePublicUsers(); // $route = route('login'); // $subject = trans('terms.email.subject', ['app_name' => config('app.name')]); diff --git a/resources/assets/js/components/App.vue b/resources/assets/js/components/App.vue index d16dab6..bbd3a64 100644 --- a/resources/assets/js/components/App.vue +++ b/resources/assets/js/components/App.vue @@ -39,9 +39,7 @@

{{ $t('landing.footer.subtitle_3') }}

- - {{ $t('landing.footer.terms_service') }} - + {{ $t('register_form.terms_conditions') }}