From acbeffb0ef028d68b861094536cb48b660e34f07 Mon Sep 17 00:00:00 2001 From: Dave Earley Date: Fri, 13 May 2016 10:55:15 +0100 Subject: [PATCH] Updated mass messaging to work with the queue system --- app/Attendize/mailers/AttendeeMailer.php | 37 +++++++++---------- .../Controllers/EventAttendeesController.php | 34 +++-------------- 2 files changed, 22 insertions(+), 49 deletions(-) diff --git a/app/Attendize/mailers/AttendeeMailer.php b/app/Attendize/mailers/AttendeeMailer.php index f2cc7843..0d58e11e 100644 --- a/app/Attendize/mailers/AttendeeMailer.php +++ b/app/Attendize/mailers/AttendeeMailer.php @@ -35,31 +35,28 @@ class AttendeeMailer extends Mailer { $event = $message_object->event; - $attendees = ($message_object->recipients == 0) + $attendees = ($message_object->recipients == 'all') ? $event->attendees // all attendees : Attendee::where('ticket_id', '=', $message_object->recipients)->where('account_id', '=', $message_object->account_id)->get(); - $toFields = []; - foreach ($attendees as $attendee) { - $toFields[$attendee->email] = $attendee->full_name; + foreach($attendees as $attendee) { + + $data = [ + 'attendee' => $attendee, + 'event' => $event, + 'message_content' => $message_object->message, + 'subject' => $message_object->subject, + 'email_logo' => $attendee->event->organiser->full_logo_path, + ]; + + Mail::send('Emails.messageAttendees', $data, function ($message) use ($attendee, $data) { + $message->to($attendee->email, $attendee->full_name) + ->from(config('attendize.outgoing_email_noreply'), $attendee->event->organiser->name) + ->replyTo($attendee->event->organiser->email, $attendee->event->organiser->name) + ->subject($data['subject']); + }); } - $data = [ - 'event' => $event, - 'message_content' => $message_object->message, - 'subject' => $message_object->subject, - ]; - - /* - * Mandril lets us send the email to multiple people at once. - */ - Mail::send('Emails.messageAttendees', $data, function ($message) use ($toFields, $event, $message_object) { - $message->to($toFields) - ->from(config('attendize.outgoing_email_noreply'), $event->organiser->name) - ->replyTo($event->organiser->email, $event->organiser->name) - ->subject($message_object->subject); - }); - $message_object->is_sent = 1; $message_object->sent_at = Carbon::now(); $message_object->save(); diff --git a/app/Http/Controllers/EventAttendeesController.php b/app/Http/Controllers/EventAttendeesController.php index 027052e5..91cbad90 100644 --- a/app/Http/Controllers/EventAttendeesController.php +++ b/app/Http/Controllers/EventAttendeesController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Commands\MessageAttendeesCommand; use App\Commands\OrderTicketsCommand; use App\Commands\SendAttendeeTicketCommand; use App\Models\Attendee; @@ -478,38 +479,13 @@ class EventAttendeesController extends MyBaseController $message = Message::createNew(); $message->message = $request->get('message'); $message->subject = $request->get('subject'); - if ($request->get('recipients') != "all") { - $message->recipients = $request->get('recipients'); - } + if ($request->get('recipients') != "all") { + $message->recipients = $request->get('recipients'); + } $message->event_id = $event_id; - $message->sent_at = new \DateTime(); $message->save(); - $query = Attendee::where("event_id", $event_id); - if ($request->get('recipients') != "all") { - $query->where('ticket_id', $request->get('recipients')); - } - - $attendees = $query->get(); - - - foreach($attendees as $attendee) { - - $data = [ - 'attendee' => $attendee, - 'message_content' => $request->get('message'), - 'subject' => $request->get('subject'), - 'event' => $attendee->event, - 'email_logo' => $attendee->event->organiser->full_logo_path, - ]; - - Mail::send('Emails.messageAttendees', $data, function ($message) use ($attendee, $data) { - $message->to($attendee->email, $attendee->full_name) - ->from(config('attendize.outgoing_email_noreply'), $attendee->event->organiser->name) - ->replyTo($attendee->event->organiser->email, $attendee->event->organiser->name) - ->subject($data['subject']); - }); - } + $this->dispatch(new MessageAttendeesCommand($message)); return response()->json([ 'status' => 'success',