From 9052a16b828968e2714833b0d8087387dae0f3c0 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 7 Mar 2023 23:17:03 +1100 Subject: [PATCH] Working on email refactor --- app/Http/Controllers/EmailController.php | 8 +++++--- app/Services/Email/Email.php | 14 +++++++------- app/Services/Email/EmailDefaults.php | 10 +++++----- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/EmailController.php b/app/Http/Controllers/EmailController.php index 0c277da03b24..4ecad444a932 100644 --- a/app/Http/Controllers/EmailController.php +++ b/app/Http/Controllers/EmailController.php @@ -130,11 +130,13 @@ class EmailController extends BaseController ]; $mo = new EmailObject; - $mo->subject = empty($subject) ? null : $subject; - $mo->body = empty($body) ? null : $body; + $mo->subject = strlen($subject) > 3 ? $subject : null; + $mo->body = strlen($body) > 3 ? $body : null; $mo->entity_id = $request->input('entity_id'); $mo->template = $template; $mo->entity_class = $this->resolveClass($entity); + $mo->email_template_body = "email_template_{$template}"; + $mo->email_template_subject = "email_subject_{$template}"; if (Ninja::isHosted() && !$entity_obj->company->account->account_sms_verified) { return response(['message' => 'Please verify your account to send emails.'], 400); @@ -151,7 +153,7 @@ class EmailController extends BaseController // EmailEntity::dispatch($invitation->fresh(), $invitation->company, $template, $data); $mo->invitation_id = $invitation->id; - + Email::dispatch($mo, $invitation->company); // MailEntity::dispatch($invitation, $invitation->company->db, $mo); } diff --git a/app/Services/Email/Email.php b/app/Services/Email/Email.php index 83dc923013d5..71e5af5c814c 100644 --- a/app/Services/Email/Email.php +++ b/app/Services/Email/Email.php @@ -117,7 +117,7 @@ class Email implements ShouldQueue $this->email_object->client_contact_id ? $this->email_object->contact = ClientContact::withTrashed()->find($this->email_object->client_contact_id) : null; } - + $this->email_object->user_id ? $this->email_object->user = User::withTrashed()->find($this->email_object->user_id) : $this->email_object->user = $this->company->owner(); $this->email_object->company_key = $this->company->company_key; @@ -139,12 +139,12 @@ class Email implements ShouldQueue private function resolveVariables(): self { - match(get_class($this->email_object->entity)){ - Invoice::class => $this->email_object->variables = (new HtmlEngine($this->email_object->invitation))->generateLabelsAndValues(), - Quote::class => $this->email_object->variables = (new HtmlEngine($this->email_object->invitation))->generateLabelsAndValues(), - Credit::class => $this->email_object->variables = (new HtmlEngine($this->email_object->invitation))->generateLabelsAndValues(), - PurchaseOrder::class => $this->email_object->variables = (new VendorHtmlEngine($this->email_object->invitation))->generateLabelsAndValues(), - default => null + match(class_basename($this->email_object->entity)){ + "Invoice" => $this->email_object->variables = (new HtmlEngine($this->email_object->invitation))->makeValues(), + "Quote" => $this->email_object->variables = (new HtmlEngine($this->email_object->invitation))->makeValues(), + "Credit" => $this->email_object->variables = (new HtmlEngine($this->email_object->invitation))->makeValues(), + "PurchaseOrder" => $this->email_object->variables = (new VendorHtmlEngine($this->email_object->invitation))->makeValues(), + default => $this->email_object->variables = [] }; return $this; diff --git a/app/Services/Email/EmailDefaults.php b/app/Services/Email/EmailDefaults.php index d6ea21fd46e1..9d13bd5ce9ab 100644 --- a/app/Services/Email/EmailDefaults.php +++ b/app/Services/Email/EmailDefaults.php @@ -151,8 +151,8 @@ class EmailDefaults { if ($this->email->email_object->body) { $this->email->email_object->body = $this->email->email_object->body; - } elseif (isset($this->email->email_object->email_template_body) && strlen($this->email->email_object->settings->{$this->email->email_object->email_template_body}) > 3) { - $this->email->email_object->body = $this->email->email_object->settings->{$this->email->email_object->email_template_body}; + } elseif (strlen($this->email->email_object->settings?->{$this->email->email_object->email_template_body}) > 3) { + $this->email->email_object->body = $this->email->email_object->settings?->{$this->email->email_object->email_template_body}; } else { $this->email->email_object->body = EmailTemplateDefaults::getDefaultTemplate($this->email->email_object->email_template_body, $this->locale); } @@ -171,8 +171,8 @@ class EmailDefaults { if ($this->email->email_object->subject) { //where the user updates the subject from the UI return $this; - } elseif (isset($this->email->email_object->email_template_subject) && strlen($this->email->email_object->settings->{$this->email->email_object->email_template_subject}) > 3) { - $this->email->email_object->subject = $this->email->email_object->settings->{$this->email->email_object->email_template_subject}; + } elseif (strlen($this->email->email_object?->settings->{$this->email->email_object->email_template_subject}) > 3) { + $this->email->email_object->subject = $this->email->email_object->settings?->{$this->email->email_object->email_template_subject}; } else { $this->email->email_object->subject = EmailTemplateDefaults::getDefaultTemplate($this->email->email_object->email_template_subject, $this->locale); } @@ -207,7 +207,7 @@ class EmailDefaults if ($this->template != 'custom') { $this->email->email_object->body = $this->parseMarkdownToHtml($this->email->email_object->body); } - +nlog($this->email->email_object->subject); return $this; }