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/ai.naniguide.com/app/Model/AdLeadFormConfig.php
<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use App\Library\Traits\HasUid;

class AdLeadFormConfig extends Model
{
    use HasFactory;
    use HasUid;

    const STATUS_ACTIVE = 'active';
    const STATUS_PAUSED = 'paused';
    const STATUS_ERROR = 'error';

    protected $table = 'ad_lead_form_configs';

    protected $fillable = ['uid', 'customer_id', 'platform', 'form_id', 'verify_token', 'webhook_registered_at', 'mail_list_id', 'field_mapping', 'status', 'last_synced_at', 'leads_count'];

    protected $casts = [
        'field_mapping' => 'json',
        'last_synced_at' => 'datetime',
        'webhook_registered_at' => 'datetime',
        'verify_token' => 'encrypted',
    ];

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

    public function mailList(): BelongsTo
    {
        return $this->belongsTo(MailList::class, 'mail_list_id');
    }

    public function leads(): HasMany
    {
        return $this->hasMany(AdLead::class, 'ad_lead_form_config_id');
    }

    public function scopeOfCustomer($query, $customerId)
    {
        return $query->where('customer_id', $customerId);
    }

    public function scopeSearch($query, $keyword)
    {
        return $keyword ? $query->where('form_id', 'like', '%' . $keyword . '%') : $query;
    }

    public function getStatusBadgeAttribute(): string
    {
        return match ($this->status) {
            self::STATUS_ACTIVE => 'green',
            self::STATUS_PAUSED => 'orange',
            self::STATUS_ERROR => 'red',
            default => 'blue',
        };
    }

    public function getPlatformLabelAttribute(): string
    {
        return AdPlatform::PLATFORM_LABELS[$this->platform] ?? ucfirst($this->platform);
    }

    protected static function newFactory()
    {
        return \Database\Factories\AdLeadFormConfigFactory::new();
    }
}