BidModifier.php 2.02 KB
<?php

namespace App\Models;

use App\Models\Pivots\GoalBidModifier;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Collection;

class BidModifier extends Model
{
    use SoftDeletes;

    const LEVEL_CAMPAIGN = 'CAMPAIGN';
    const LEVEL_AD_GROUP = 'AD_GROUP';

    const TYPE_MOBILE_ADJUSTMENT = 'MOBILE_ADJUSTMENT';
    const TYPE_DESKTOP_ADJUSTMENT = 'DESKTOP_ADJUSTMENT';
    const TYPE_DEMOGRAPHICS_ADJUSTMENT = 'DEMOGRAPHICS_ADJUSTMENT';
    const TYPE_RETARGETING_ADJUSTMENT = 'RETARGETING_ADJUSTMENT';
    const TYPE_REGIONAL_ADJUSTMENT = 'REGIONAL_ADJUSTMENT';
    const TYPE_VIDEO_ADJUSTMENT = 'VIDEO_ADJUSTMENT';
    const TYPE_SMART_AD_ADJUSTMENT = 'SMART_AD_ADJUSTMENT';


    protected $fillable = [
        'external_id',
        'campaign_external_id',
        'ad_group_external_id',
        'campaign_id',
        'ad_group_id',

        'level',
        'type',

        'mobile_adjustment',
        'desktop_adjustment',
        'demographics_adjustment',
        'retargeting_adjustment',

        'updated_self',
    ];

    protected $casts = [
        'mobile_adjustment' => 'json',
        'desktop_adjustment' => 'json',
        'demographics_adjustment' => 'json',
        'retargeting_adjustment' => 'json',

        'updated_self' => 'datetime',
    ];

    /**
     * @param Builder $query
     * @return Builder
     */
    public function scopeForUpdatedSelf($query)
    {
        return $query->whereNotNull("{$query->getModel()->getTable()}.updated_self");
    }

    public function groups()
    {
        return $this->hasMany(AdGroup::class, 'ad_group_id');
    }

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

    public function campaignForEnabledForManaged()
    {
        return $this->campaign()->forEnabled()->forManaged();
    }

    public function goalBidModifiers()
    {
        return $this->hasMany(GoalBidModifier::class, 'bid_modifier_id');
    }

}