From 9311882c2390094cb5cf00d9e17fe68ee7e5f56b Mon Sep 17 00:00:00 2001
From: David Bomba
Date: Fri, 25 Feb 2022 13:55:32 +1100
Subject: [PATCH] Add unsubscribe links to emails
---
.../ClientPortal/InvitationController.php | 10 ++++++----
app/Mail/TemplateEmail.php | 2 ++
app/Utils/Traits/Inviteable.php | 12 ++++++++++++
resources/lang/en/texts.php | 3 ++-
resources/views/email/template/client.blade.php | 3 +++
resources/views/email/template/plain.blade.php | 3 +++
6 files changed, 28 insertions(+), 5 deletions(-)
diff --git a/app/Http/Controllers/ClientPortal/InvitationController.php b/app/Http/Controllers/ClientPortal/InvitationController.php
index 4b2fc185aded..c12a1dd9dd61 100644
--- a/app/Http/Controllers/ClientPortal/InvitationController.php
+++ b/app/Http/Controllers/ClientPortal/InvitationController.php
@@ -270,18 +270,20 @@ class InvitationController extends Controller
public function unsubscribe(Request $request, string $invitation_key)
{
- if($invite = InvoiceInvitation::where('key', $invitation_key)->first()){
+ if($invite = InvoiceInvitation::withTrashed()->where('key', $invitation_key)->first()){
$invite->contact->send_email = false;
$invite->contact->save();
- }elseif($invite = QuoteInvitation::where('key', $invitation_key)->first()){
+ }elseif($invite = QuoteInvitation::withTrashed()->where('key', $invitation_key)->first()){
$invite->contact->send_email = false;
$invite->contact->save();
- }elseif($invite = CreditInvitation::where('key', $invitation_key)->first()){
+ }elseif($invite = CreditInvitation::withTrashed()->where('key', $invitation_key)->first()){
$invite->contact->send_email = false;
$invite->contact->save();
}
+ else
+ return abort(404);
- $data['logo'] = auth()->user()->company()->present()->logo();
+ $data['logo'] = $invite->company->present()->logo();
return $this->render('generic.unsubscribe', $data);
diff --git a/app/Mail/TemplateEmail.php b/app/Mail/TemplateEmail.php
index 20296b2d7393..273d4b19749d 100644
--- a/app/Mail/TemplateEmail.php
+++ b/app/Mail/TemplateEmail.php
@@ -97,6 +97,7 @@ class TemplateEmail extends Mailable
'footer' => $this->build_email->getFooter(),
'whitelabel' => $this->client->user->account->isPaid() ? true : false,
'settings' => $settings,
+ 'unsubscribe_link' => $this->invitation->getUnsubscribeLink(),
])
->view($template_name, [
'greeting' => ctrans('texts.email_salutation', ['name' => $this->contact->present()->name()]),
@@ -110,6 +111,7 @@ class TemplateEmail extends Mailable
'company' => $company,
'whitelabel' => $this->client->user->account->isPaid() ? true : false,
'logo' => $this->company->present()->logo($settings),
+ 'unsubscribe_link' => $this->invitation->getUnsubscribeLink(),
])
->withSwiftMessage(function ($message) use($company){
$message->getHeaders()->addTextHeader('Tag', $company->company_key);
diff --git a/app/Utils/Traits/Inviteable.php b/app/Utils/Traits/Inviteable.php
index 2b85e8a84264..a9fa3346e874 100644
--- a/app/Utils/Traits/Inviteable.php
+++ b/app/Utils/Traits/Inviteable.php
@@ -54,6 +54,18 @@ trait Inviteable
return $domain.'/client/pay/'.$this->key;
}
+ public function getUnsubscribeLink()
+ {
+ if(Ninja::isHosted()){
+ $domain = $this->company->domain();
+ }
+ else
+ $domain = config('ninja.app_url');
+
+ return $domain.'/client/unsubscribe/'.$this->key;
+
+ }
+
public function getLink() :string
{
$entity_type = Str::snake(class_basename($this->entityType()));
diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php
index 43f1620151d9..ffe0ffd314a2 100644
--- a/resources/lang/en/texts.php
+++ b/resources/lang/en/texts.php
@@ -4545,8 +4545,9 @@ $LANG = array(
'activity_124' => ':user restored recurring expense :recurring_expense',
'fpx' => "FPX",
'to_view_entity_set_password' => 'To view the :entity you need to set password.',
+ 'unsubscribe' => 'Unsubscribe',
'unsubscribed' => 'Unsubscribed',
- 'Unsubscribed_text' => 'You have been removed from notifications for this document'
+ 'unsubscribed_text' => 'You have been removed from notifications for this document'
);
return $LANG;
diff --git a/resources/views/email/template/client.blade.php b/resources/views/email/template/client.blade.php
index a020e48aa7e6..a2a7709ffdf7 100644
--- a/resources/views/email/template/client.blade.php
+++ b/resources/views/email/template/client.blade.php
@@ -177,6 +177,9 @@
@endif
+ @if(isset($unsubscribe_link))
+ {{ ctrans('texts.unsubscribe') }}
+ @endif
diff --git a/resources/views/email/template/plain.blade.php b/resources/views/email/template/plain.blade.php
index c896a646f184..194bb0662036 100644
--- a/resources/views/email/template/plain.blade.php
+++ b/resources/views/email/template/plain.blade.php
@@ -29,3 +29,6 @@
@endif
@endisset
+@if(isset($unsubscribe_link))
+{{ ctrans('texts.unsubscribe') }}
+@endif
\ No newline at end of file