UnsubscribeController::__invoke()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 20
rs 9.6
c 0
b 0
f 0
cc 3
nc 3
nop 2
1
<?php
2
3
namespace Spatie\EmailCampaigns\Http\Controllers;
4
5
use Spatie\EmailCampaigns\Models\CampaignSend;
6
use Spatie\EmailCampaigns\Models\Subscription;
7
use Spatie\EmailCampaigns\Enums\SubscriptionStatus;
8
9
class UnsubscribeController
10
{
11
    public function __invoke(string $emailListSubscriptionUuid, string $campaignSendUuid = null)
12
    {
13
        /** @var \Spatie\EmailCampaigns\Models\Subscription $subscription */
14
        if (! $subscription = Subscription::findByUuid($emailListSubscriptionUuid)) {
15
            return view('email-campaigns::unsubscribe.notFound');
16
        }
17
18
        $emailList = $subscription->emailList;
19
20
        if ($subscription->status === SubscriptionStatus::UNSUBSCRIBED) {
21
            return view('email-campaigns::unsubscribe.alreadyUnsubscribed', compact('emailList'));
22
        }
23
24
        $campaignSend = CampaignSend::findByUuid($campaignSendUuid ?? '');
25
        $subscription->markAsUnsubscribed($campaignSend);
26
27
        $emailList = $subscription->emailList;
28
29
        return view('email-campaigns::unsubscribe.unsubscribed', compact('emailList'));
30
    }
31
}
32