From 89a271e59c39e718c2b2f9a14d0039c6a6b207a9 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 31 Mar 2021 12:55:33 +1100 Subject: [PATCH] Improve custom label replacements in emails --- app/Jobs/Payment/EmailPayment.php | 7 ++++++- app/Mail/Admin/AutoBillingFailureObject.php | 3 +++ app/Mail/Admin/ClientPaymentFailureObject.php | 3 +++ app/Mail/Admin/EntityFailedSendObject.php | 7 ++++++- app/Mail/Admin/EntityPaidObject.php | 13 ++++++++++++- app/Mail/Engine/BaseEmailEngine.php | 1 + app/Mail/Engine/PaymentEmailEngine.php | 2 +- app/Mail/TemplateEmail.php | 13 +++++++++---- 8 files changed, 41 insertions(+), 8 deletions(-) diff --git a/app/Jobs/Payment/EmailPayment.php b/app/Jobs/Payment/EmailPayment.php index 134b0673ea..2abdfd802a 100644 --- a/app/Jobs/Payment/EmailPayment.php +++ b/app/Jobs/Payment/EmailPayment.php @@ -77,8 +77,13 @@ class EmailPayment implements ShouldQueue $email_builder = (new PaymentEmailEngine($this->payment, $this->contact))->build(); + $invitation = null; + + if($this->payment->invoices()->exists()) + $invitation = $this->payment->invoices()->first()->invitations()->first(); + $nmo = new NinjaMailerObject; - $nmo->mailable = new TemplateEmail($email_builder, $this->contact); + $nmo->mailable = new TemplateEmail($email_builder, $this->contact, $invitation); $nmo->to_user = $this->contact; $nmo->settings = $this->settings; $nmo->company = $this->company; diff --git a/app/Mail/Admin/AutoBillingFailureObject.php b/app/Mail/Admin/AutoBillingFailureObject.php index bd30395f67..e906450616 100644 --- a/app/Mail/Admin/AutoBillingFailureObject.php +++ b/app/Mail/Admin/AutoBillingFailureObject.php @@ -12,6 +12,7 @@ namespace App\Mail\Admin; use App\Models\Invoice; +use App\Utils\HtmlEngine; use App\Utils\Number; use App\Utils\Traits\MakesHash; use stdClass; @@ -84,6 +85,8 @@ class AutoBillingFailureObject private function getData() { $signature = $this->client->getSetting('email_signature'); + $html_variables = (new HtmlEngine($this->invoices->first()->invitations->first()))->makeValues(); + $signature = str_replace(array_keys($html_variables), array_values($html_variables), $signature); $data = [ 'title' => ctrans( diff --git a/app/Mail/Admin/ClientPaymentFailureObject.php b/app/Mail/Admin/ClientPaymentFailureObject.php index 0135a2dad1..4debf5a37c 100644 --- a/app/Mail/Admin/ClientPaymentFailureObject.php +++ b/app/Mail/Admin/ClientPaymentFailureObject.php @@ -12,6 +12,7 @@ namespace App\Mail\Admin; use App\Models\Invoice; +use App\Utils\HtmlEngine; use App\Utils\Number; use App\Utils\Traits\MakesHash; use stdClass; @@ -88,6 +89,8 @@ class ClientPaymentFailureObject private function getData() { $signature = $this->client->getSetting('email_signature'); + $html_variables = (new HtmlEngine($this->invoices->first()->invitations->first()))->makeValues(); + $signature = str_replace(array_keys($html_variables), array_values($html_variables), $signature); $data = [ 'title' => ctrans( diff --git a/app/Mail/Admin/EntityFailedSendObject.php b/app/Mail/Admin/EntityFailedSendObject.php index bc7d228fba..0b937e7316 100644 --- a/app/Mail/Admin/EntityFailedSendObject.php +++ b/app/Mail/Admin/EntityFailedSendObject.php @@ -11,6 +11,7 @@ namespace App\Mail\Admin; +use App\Utils\HtmlEngine; use App\Utils\Number; use stdClass; @@ -121,6 +122,10 @@ class EntityFailedSendObject private function getData() { $settings = $this->entity->client->getMergedSettings(); + $signature = $settings->email_signature; + + $html_variables = (new HtmlEngine($this->invitation)->makeValues(); + $signature = str_replace(array_keys($html_variables), array_values($html_variables), $signature); return [ 'title' => $this->getSubject(), @@ -136,7 +141,7 @@ class EntityFailedSendObject ), 'url' => $this->invitation->getAdminLink(), 'button' => ctrans("texts.view_{$this->entity_type}"), - 'signature' => $settings->email_signature, + 'signature' => $signature, 'logo' => $this->company->present()->logo(), 'settings' => $settings, 'whitelabel' => $this->company->account->isPaid() ? true : false, diff --git a/app/Mail/Admin/EntityPaidObject.php b/app/Mail/Admin/EntityPaidObject.php index 25046f7af5..df9c7fa8c6 100644 --- a/app/Mail/Admin/EntityPaidObject.php +++ b/app/Mail/Admin/EntityPaidObject.php @@ -11,6 +11,7 @@ namespace App\Mail\Admin; +use App\Mail\Engine\PaymentEmailEngine; use App\Utils\Number; use stdClass; @@ -62,6 +63,8 @@ class EntityPaidObject { $settings = $this->payment->client->getMergedSettings(); + $signature = $this->generateSignature($settings); + $amount = Number::formatMoney($this->payment->amount, $this->payment->client); $invoice_texts = ctrans('texts.invoice_number_short'); @@ -85,7 +88,6 @@ class EntityPaidObject ] ), 'url' => config('ninja.app_url'), - // 'url' => config('ninja.app_url') . '/payments/' . $this->payment->hashed_id, //because we have no deep linking we cannot use this 'button' => ctrans('texts.view_payment'), 'signature' => $settings->email_signature, 'logo' => $this->company->present()->logo(), @@ -95,4 +97,13 @@ class EntityPaidObject return $data; } + + private function generateSignature($settings) + { + $html_variables = (new PaymentEmailEngine($this->payment, $this->payment->client->primary_contact()->first()))->makeValues(); + + $signature = str_replace(array_keys($html_variables), array_values($html_variables), $settings->email_signature); + + return $signature; + } } diff --git a/app/Mail/Engine/BaseEmailEngine.php b/app/Mail/Engine/BaseEmailEngine.php index 01727dfd8a..2f7bfa49da 100644 --- a/app/Mail/Engine/BaseEmailEngine.php +++ b/app/Mail/Engine/BaseEmailEngine.php @@ -69,6 +69,7 @@ class BaseEmailEngine implements EngineInterface { if (! empty($this->variables)) { $body = str_replace(array_keys($this->variables), array_values($this->variables), $body); + $body = str_replace(array_keys($this->variables), array_values($this->variables), $body); } $this->body = $body; diff --git a/app/Mail/Engine/PaymentEmailEngine.php b/app/Mail/Engine/PaymentEmailEngine.php index 8e12d72808..94c9258436 100644 --- a/app/Mail/Engine/PaymentEmailEngine.php +++ b/app/Mail/Engine/PaymentEmailEngine.php @@ -76,7 +76,7 @@ class PaymentEmailEngine extends BaseEmailEngine } - private function makePaymentVariables() + public function makePaymentVariables() { $data = []; diff --git a/app/Mail/TemplateEmail.php b/app/Mail/TemplateEmail.php index ea47aab148..7598a54c4e 100644 --- a/app/Mail/TemplateEmail.php +++ b/app/Mail/TemplateEmail.php @@ -53,9 +53,14 @@ class TemplateEmail extends Mailable $company = $this->client->company; - $html_variables = (new HtmlEngine($this->invitation))->makeValues(); - -//str_replace(array_keys($html_variables), array_values($html_variables), $settings->email_signature) + if($this->invitation) + { + $html_variables = (new HtmlEngine($this->invitation))->makeValues(); + $signature = str_replace(array_keys($html_variables), array_values($html_variables), $settings->email_signature); + } + else + $signature = $settings->email_signature; + $this->from(config('mail.from.address'), $this->company->present()->name()); if (strlen($settings->bcc_email) > 1) @@ -75,7 +80,7 @@ class TemplateEmail extends Mailable 'view_link' => $this->build_email->getViewLink(), 'view_text' => $this->build_email->getViewText(), 'title' => '', - 'signature' => str_replace(array_keys($html_variables), array_values($html_variables), $settings->email_signature), + 'signature' => $signature, 'settings' => $settings, 'company' => $company, 'whitelabel' => $this->client->user->account->isPaid() ? true : false,