From f0823c77e3f4ae1f4e72bdd03b09f3139d413803 Mon Sep 17 00:00:00 2001 From: Adam Wathan Date: Tue, 22 Aug 2017 15:24:42 -0400 Subject: [PATCH] 136 - Refactoring for Robustness --- app/AttendeeMessage.php | 11 +++++++++-- app/Jobs/SendAttendeeMessage.php | 6 ++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/AttendeeMessage.php b/app/AttendeeMessage.php index 67b26e1..a507759 100644 --- a/app/AttendeeMessage.php +++ b/app/AttendeeMessage.php @@ -13,8 +13,15 @@ class AttendeeMessage extends Model return $this->belongsTo(Concert::class); } - public function recipients() + public function orders() { - return $this->concert->orders()->pluck('email'); + return $this->concert->orders(); + } + + public function withChunkedRecipients($chunkSize, $callback) + { + $this->orders()->chunk($chunkSize, function ($orders) use ($callback) { + $callback($orders->pluck('email')); + }); } } diff --git a/app/Jobs/SendAttendeeMessage.php b/app/Jobs/SendAttendeeMessage.php index 4b4fae9..60a5bc5 100644 --- a/app/Jobs/SendAttendeeMessage.php +++ b/app/Jobs/SendAttendeeMessage.php @@ -33,8 +33,10 @@ class SendAttendeeMessage implements ShouldQueue */ public function handle() { - $this->attendeeMessage->recipients()->each(function ($recipient) { - Mail::to($recipient)->send(new AttendeeMessageEmail($this->attendeeMessage)); + $this->attendeeMessage->withChunkedRecipients(20, function ($recipients) { + $recipients->each(function ($recipient) { + Mail::to($recipient)->queue(new AttendeeMessageEmail($this->attendeeMessage)); + }); }); } }