report = $report; $this->subject = $report->project->mail_subject; $this->message = $report->project->mail_template; $this->recipients = $this->report->project->emailRecipients()->get(['email', 'name'])->toArray(); } public function save() { $this->validate(); self::saveAndSendMailing($this->report, $this->subject, $this->message, $this->recipients); $this->setReport($this->report); } public static function saveAndSendMailing($report, $subject, $message, $recipients) { $mailing = $report->project->mailings()->create([ 'subject' => $subject, 'message' => $message, 'report_id' => $report->id, ]); $mailing->attachments()->create([ 'name' => $report->name, 'path' => $report->path, ]); $mailing->recipients()->createMany($recipients); Mail::to($mailing->recipients()->pluck('email')->toArray()) ->send(new \App\Mail\ReportMailer($mailing, $report)); } }