diff --git a/app/Http/Controllers/ClientPortal/InvitationController.php b/app/Http/Controllers/ClientPortal/InvitationController.php index 6554ecbbb67a..4b2fc185aded 100644 --- a/app/Http/Controllers/ClientPortal/InvitationController.php +++ b/app/Http/Controllers/ClientPortal/InvitationController.php @@ -19,8 +19,10 @@ use App\Http\Controllers\Controller; use App\Jobs\Entity\CreateRawPdf; use App\Models\Client; use App\Models\ClientContact; +use App\Models\CreditInvitation; use App\Models\InvoiceInvitation; use App\Models\Payment; +use App\Models\QuoteInvitation; use App\Services\ClientPortal\InstantPayment; use App\Utils\CurlUtils; use App\Utils\Ninja; @@ -265,4 +267,24 @@ class InvitationController extends Controller abort(404, "Invoice not found"); } + + public function unsubscribe(Request $request, string $invitation_key) + { + if($invite = InvoiceInvitation::where('key', $invitation_key)->first()){ + $invite->contact->send_email = false; + $invite->contact->save(); + }elseif($invite = QuoteInvitation::where('key', $invitation_key)->first()){ + $invite->contact->send_email = false; + $invite->contact->save(); + }elseif($invite = CreditInvitation::where('key', $invitation_key)->first()){ + $invite->contact->send_email = false; + $invite->contact->save(); + } + + $data['logo'] = auth()->user()->company()->present()->logo(); + + return $this->render('generic.unsubscribe', $data); + + } + } diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index d9cac7cb5a03..43f1620151d9 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -4545,6 +4545,8 @@ $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.', + 'unsubscribed' => 'Unsubscribed', + 'Unsubscribed_text' => 'You have been removed from notifications for this document' ); return $LANG; diff --git a/resources/views/portal/ninja2020/generic/unsubscribe.blade.php b/resources/views/portal/ninja2020/generic/unsubscribe.blade.php new file mode 100644 index 000000000000..58d8c83d29e9 --- /dev/null +++ b/resources/views/portal/ninja2020/generic/unsubscribe.blade.php @@ -0,0 +1,20 @@ +@extends('portal.ninja2020.layout.clean') +@section('meta_title', ctrans('texts.unsubscribed')) + +@section('body') + +
+
+
+ Invoice Ninja logo +

{{ ctrans('texts.unsubscribed') }}

+

{{ ctrans('texts.unsubscribed_text') }}

+
+
+
+ +@stop + +@push('footer') + +@endpush diff --git a/routes/client.php b/routes/client.php index 10b26c3f6119..f63c10e5be62 100644 --- a/routes/client.php +++ b/routes/client.php @@ -113,6 +113,9 @@ Route::group(['middleware' => ['invite_db'], 'prefix' => 'client', 'as' => 'clie Route::get('credit/{invitation_key}/download_pdf', 'CreditController@downloadPdf')->name('credit.download_invitation_key'); 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('{entity}/{client_hash}/{invitation_key}', 'ClientPortal\InvitationController@routerForIframe')->name('invoice.client_hash_and_invitation_key'); //should never need this });