Improve resolution of invitations

This commit is contained in:
David Bomba 2022-02-27 18:33:29 +11:00
parent 2630f62dfb
commit e964ff8137
3 changed files with 11 additions and 6 deletions

View File

@ -264,15 +264,18 @@ class InvitationController extends Controller
abort(404, "Invoice not found"); 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->send_email = false;
$invite->contact->save(); $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->send_email = false;
$invite->contact->save(); $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->send_email = false;
$invite->contact->save(); $invite->contact->save();
} }

View File

@ -62,7 +62,9 @@ trait Inviteable
else else
$domain = config('ninja.app_url'); $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;
} }

View File

@ -114,7 +114,7 @@ Route::group(['middleware' => ['invite_db'], 'prefix' => 'client', 'as' => 'clie
Route::get('{entity}/{invitation_key}/download', 'ClientPortal\InvitationController@routerForDownload'); Route::get('{entity}/{invitation_key}/download', 'ClientPortal\InvitationController@routerForDownload');
Route::get('pay/{invitation_key}', 'ClientPortal\InvitationController@payInvoice')->name('pay.invoice'); 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 // Route::get('{entity}/{client_hash}/{invitation_key}', 'ClientPortal\InvitationController@routerForIframe')->name('invoice.client_hash_and_invitation_key'); //should never need this