UnsubscribeController   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 23
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 3
lcom 0
cbo 2
dl 0
loc 23
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 20 3
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