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/AdPublishLog.php
<?php

namespace App\Model;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class AdPublishLog extends Model
{
    use HasFactory;

    const ACTION_PUBLISH = 'publish';
    const ACTION_PAUSE = 'pause';
    const ACTION_RESUME = 'resume';
    const ACTION_UPDATE = 'update';
    const ACTION_DELETE = 'delete';

    const STATUS_PENDING = 'pending';
    const STATUS_SUCCESS = 'success';
    const STATUS_ERROR = 'error';
    const STATUS_REJECTED = 'rejected';

    protected $table = 'ad_publish_logs';

    protected $fillable = [
        'ad_campaign_id',
        'ad_platform_id',
        'platform',
        'action',
        'status',
        'idempotency_key',
        'request_data',
        'response_data',
        'error_message',
    ];

    protected $casts = [
        'request_data' => 'json',
        'response_data' => 'json',
    ];

    public function campaign()
    {
        return $this->belongsTo(AdCampaign::class, 'ad_campaign_id');
    }

    public function adPlatform()
    {
        return $this->belongsTo(AdPlatform::class, 'ad_platform_id');
    }

    public function scopeOfCampaign($query, $campaignId)
    {
        return $query->where('ad_campaign_id', $campaignId);
    }

    public function isSuccess(): bool
    {
        return $this->status === self::STATUS_SUCCESS;
    }

    public function isError(): bool
    {
        return $this->status === self::STATUS_ERROR;
    }

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