HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/hi.naniguide.com/app/Models/EmailList.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes;
use App\Models\Traits\WorkspaceScoped;

class EmailList extends Model
{
    use HasFactory, SoftDeletes, WorkspaceScoped;

    protected $fillable = [
        'customer_id',
        'sending_domain_id',
        'name',
        'display_name',
        'description',
        'from_name',
        'from_email',
        'reply_to',
        'status',
        'opt_in',
        'opt_out',
        'double_opt_in',
        'default_subject',
        'company_name',
        'company_address',
        'footer_text',
        'welcome_email_enabled',
        'welcome_email_subject',
        'welcome_email_content',
        'unsubscribe_email_enabled',
        'unsubscribe_email_subject',
        'unsubscribe_email_content',
        'unsubscribe_redirect_url',
        'gdpr_enabled',
        'gdpr_text',
        'custom_fields',
        'tags',
        'subscribers_count',
        'confirmed_subscribers_count',
        'unsubscribed_count',
        'bounced_count',
        'last_subscriber_at',
    ];

    protected function casts(): array
    {
        return [
            'custom_fields' => 'array',
            'tags' => 'array',
            'double_opt_in' => 'boolean',
            'welcome_email_enabled' => 'boolean',
            'unsubscribe_email_enabled' => 'boolean',
            'gdpr_enabled' => 'boolean',
            'last_subscriber_at' => 'datetime',
        ];
    }

    public function customer(): BelongsTo
    {
        return $this->belongsTo(Customer::class)->withTrashed();
    }

    public function sendingDomain(): BelongsTo
    {
        return $this->belongsTo(SendingDomain::class, 'sending_domain_id');
    }

    public function subscribers(): HasMany
    {
        return $this->hasMany(ListSubscriber::class, 'list_id');
    }

    public function campaigns(): HasMany
    {
        return $this->hasMany(Campaign::class, 'list_id');
    }

    public function autoResponders(): HasMany
    {
        return $this->hasMany(AutoResponder::class, 'list_id');
    }

    public function bounceLogs(): HasMany
    {
        return $this->hasMany(BounceLog::class, 'subscriber_id')
            ->whereHas('subscriber', function ($q) {
                $q->where('list_id', $this->id);
            });
    }

    public function confirmedSubscribers(): HasMany
    {
        return $this->hasMany(ListSubscriber::class, 'list_id')
            ->where('status', 'confirmed');
    }

    public function segments(): HasMany
    {
        return $this->hasMany(ListSegment::class, 'list_id');
    }

    public function subscriptionForms(): HasMany
    {
        return $this->hasMany(SubscriptionForm::class, 'list_id');
    }
}