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();
}
}