/** * @param Payment $payment */ public function sendPaymentConfirmation(Payment $payment) { $account = $payment->account; $client = $payment->client; $account->loadLocalizationSettings($client); $invoice = $payment->invoice; $accountName = $account->getDisplayName(); $emailTemplate = $account->getEmailTemplate(ENTITY_PAYMENT); $emailSubject = $invoice->account->getEmailSubject(ENTITY_PAYMENT); if ($payment->invitation) { $user = $payment->invitation->user; $contact = $payment->contact; $invitation = $payment->invitation; } else { $user = $payment->user; $contact = $client->contacts[0]; $invitation = $payment->invoice->invitations[0]; } $variables = ['account' => $account, 'client' => $client, 'invitation' => $invitation, 'amount' => $payment->amount]; $data = ['body' => $this->templateService->processVariables($emailTemplate, $variables), 'link' => $invitation->getLink(), 'invoice' => $invoice, 'client' => $client, 'account' => $account, 'payment' => $payment, 'entityType' => ENTITY_INVOICE]; if ($account->attachPDF()) { $data['pdfString'] = $invoice->getPDFString(); $data['pdfFileName'] = $invoice->getFileName(); } $subject = $this->templateService->processVariables($emailSubject, $variables); $data['invoice_id'] = $payment->invoice->id; $view = $account->getTemplateView('payment_confirmation'); if ($user->email && $contact->email) { $this->sendTo($contact->email, $user->email, $accountName, $subject, $view, $data); } $account->loadLocalizationSettings(); }
/** * @param TemplateService $templateService * @return \Illuminate\Http\Response */ public function previewEmail(TemplateService $templateService) { $template = Input::get('template'); $invoice = Invoice::scope()->invoices()->withTrashed()->first(); if (!$invoice) { return trans('texts.create_invoice_for_sample'); } /** @var \App\Models\Account $account */ $account = Auth::user()->account; $invitation = $invoice->invitations->first(); // replace the variables with sample data $data = ['account' => $account, 'invoice' => $invoice, 'invitation' => $invitation, 'link' => $invitation->getLink(), 'client' => $invoice->client, 'amount' => $invoice->amount]; // create the email view $view = 'emails.' . $account->getTemplateView(ENTITY_INVOICE) . '_html'; $data = array_merge($data, ['body' => $templateService->processVariables($template, $data), 'entityType' => ENTITY_INVOICE]); return Response::view($view, $data); }