From e964ff813703e2c0348c0d3c3bd17813056cc757 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Sun, 27 Feb 2022 18:33:29 +1100 Subject: [PATCH] Improve resolution of invitations --- .../Controllers/ClientPortal/InvitationController.php | 11 +++++++---- app/Utils/Traits/Inviteable.php | 4 +++- routes/client.php | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/ClientPortal/InvitationController.php b/app/Http/Controllers/ClientPortal/InvitationController.php index f8706897956d..0bd9c97c5249 100644 --- a/app/Http/Controllers/ClientPortal/InvitationController.php +++ b/app/Http/Controllers/ClientPortal/InvitationController.php @@ -264,15 +264,18 @@ class InvitationController extends Controller abort(404, "Invoice not found"); } - public function unsubscribe(Request $request, string $invitation_key) + public function unsubscribe(Request $request, string $entity_type, string $invitation_key) { - if($invite = InvoiceInvitation::withTrashed()->where('key', $invitation_key)->first()){ + if($entity_type == 'invoice'){ + $invite = InvoiceInvitation::withTrashed()->where('key', $invitation_key)->first(); $invite->contact->send_email = false; $invite->contact->save(); - }elseif($invite = QuoteInvitation::withTrashed()->where('key', $invitation_key)->first()){ + }elseif($entity_type == 'quote'){ + $invite = QuoteInvitation::withTrashed()->where('key', $invitation_key)->first(); $invite->contact->send_email = false; $invite->contact->save(); - }elseif($invite = CreditInvitation::withTrashed()->where('key', $invitation_key)->first()){ + }elseif($entity_type == 'credit'){ + $invite = CreditInvitation::withTrashed()->where('key', $invitation_key)->first(); $invite->contact->send_email = false; $invite->contact->save(); } diff --git a/app/Utils/Traits/Inviteable.php b/app/Utils/Traits/Inviteable.php index a9fa3346e874..ea98c9431222 100644 --- a/app/Utils/Traits/Inviteable.php +++ b/app/Utils/Traits/Inviteable.php @@ -62,7 +62,9 @@ trait Inviteable else $domain = config('ninja.app_url'); - return $domain.'/client/unsubscribe/'.$this->key; + $entity_type = Str::snake(class_basename($this->entityType())); + + return $domain.'/client/unsubscribe/'.$entity_type.'/'.$this->key; } diff --git a/routes/client.php b/routes/client.php index f63c10e5be62..855c206b81d2 100644 --- a/routes/client.php +++ b/routes/client.php @@ -114,7 +114,7 @@ Route::group(['middleware' => ['invite_db'], 'prefix' => 'client', 'as' => 'clie Route::get('{entity}/{invitation_key}/download', 'ClientPortal\InvitationController@routerForDownload'); Route::get('pay/{invitation_key}', 'ClientPortal\InvitationController@payInvoice')->name('pay.invoice'); - Route::get('unsubscribe/{invitation_key}', 'ClientPortal\InvitationController@unsubscribe')->name('unsubscribe'); + Route::get('unsubscribe/{entity_type}/{invitation_key}', 'ClientPortal\InvitationController@unsubscribe')->name('unsubscribe'); // Route::get('{entity}/{client_hash}/{invitation_key}', 'ClientPortal\InvitationController@routerForIframe')->name('invoice.client_hash_and_invitation_key'); //should never need this