Completed
Push — master ( 6891c0...e1d218 )
by Freek
01:16
created

Subscription::unsubscribeUrl()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
namespace Spatie\EmailCampaigns\Models;
4
5
use Illuminate\Database\Eloquent\Model;
6
use Spatie\EmailCampaigns\Http\Controllers\UnsubscribeController;
7
use Spatie\EmailCampaigns\Support\Config;
8
use Spatie\EmailCampaigns\Events\Unsubscribed;
9
use Spatie\EmailCampaigns\Models\Concerns\HasUuid;
10
use Spatie\EmailCampaigns\Enums\SubscriptionStatus;
11
use Illuminate\Database\Eloquent\Relations\BelongsTo;
12
use Spatie\EmailCampaigns\Actions\ConfirmSubscriptionAction;
13
14
class Subscription extends Model
15
{
16
    public $table = 'email_list_subscriptions';
17
18
    use HasUuid;
19
20
    public $guarded = [];
21
22
    public function emailList(): BelongsTo
23
    {
24
        return $this->belongsTo(EmailList::class);
25
    }
26
27
    public function subscriber(): BelongsTo
28
    {
29
        return $this->belongsTo(Subscriber::class, 'email_list_subscriber_id');
30
    }
31
32
    public function confirm()
33
    {
34
        $action = Config::getActionClass('confirm_subscription_action', ConfirmSubscriptionAction::class);
35
36
        return $action->execute($this);
37
    }
38
39
    public function markAsUnsubscribed()
40
    {
41
        $this->update(['status' => SubscriptionStatus::UNSUBSCRIBED]);
42
43
        event(new Unsubscribed($this));
44
45
        return $this;
46
    }
47
48
    public function unsubscribeUrl(): string
49
    {
50
        return url(action(UnsubscribeController::class, $this->uuid));
51
    }
52
}
53