AdGroup.php
6.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
/**
* App\Models\AdGroup
*
* @property int $id
* @property int $campaign_id
* @property int $external_id
* @property int $campaign_external_id
* @property string|null $name
* @property string|null $tracking_params
* @property string|null $status
* @property string|null $serving_status
* @property string|null $type
* @property string|null $sub_type
* @property array|null $restricted_region_ids
* @property array|null $region_ids
* @property array|null $negative_keywords
* @property array|null $negative_keyword_shared_set_ids
* @property \Illuminate\Support\Carbon|null $updated_self
* @property \Illuminate\Support\Carbon|null $created_at
* @property \Illuminate\Support\Carbon|null $updated_at
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup forUpdatedSelf()
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup newModelQuery()
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup newQuery()
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup query()
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereCampaignExternalId($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereCampaignId($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereCreatedAt($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereExternalId($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereId($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereName($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereNegativeKeywordSharedSetIds($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereNegativeKeywords($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereRegionIds($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereRestrictedRegionIds($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereServingStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereStatus($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereSubType($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereTrackingParams($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereType($value)
* @method static \Illuminate\Database\Eloquent\Builder|AdGroup whereUpdatedAt($value)
* @mixin \Eloquent
*/
class AdGroup extends Model
{
const STATUS_ACCEPTED = 'ACCEPTED';
const STATUS_DRAFT = 'DRAFT';
const STATUS_MODERATION = 'MODERATION';
const STATUS_PREACCEPTED = 'PREACCEPTED';
const STATUS_REJECTED = 'REJECTED';
const SERVING_ELIGIBLE = 'ELIGIBLE';
const SERVING_RARELY_SERVED = 'RARELY_SERVED';
const TYPE_TEXT_AD_GROUP = 'TEXT_AD_GROUP';
const TYPE_MOBILE_APP_AD_GROUP = 'MOBILE_APP_AD_GROUP';
const TYPE_DYNAMIC_TEXT_AD_GROUP = 'DYNAMIC_TEXT_AD_GROUP';
const TYPE_CPM_BANNER_AD_GROUP = 'CPM_BANNER_AD_GROUP';
const TYPE_CPM_VIDEO_AD_GROUP = 'CPM_VIDEO_AD_GROUP';
const TYPE_SMART_AD_GROUP = 'SMART_AD_GROUP';
const SUB_TYPE_WEBPAGE = 'WEBPAGE';
const SUB_TYPE_FEED = 'FEED';
const SUB_TYPE_NONE = 'NONE';
const SUB_TYPE_KEYWORDS = 'KEYWORDS';
const SUB_TYPE_USER_PROFILE = 'USER_PROFILE';
protected $fillable = [
'campaign_id',
'external_id',
'campaign_external_id',
'name',
'region_ids',
'negative_keywords',
'negative_keyword_shared_set_ids',
'tracking_params',
'mobile_app_ad_group',
'dynamic_text_ad_group',
'dynamic_text_feed_ad_group',
'cpm_banner_user_profile_ad_group',
'cpm_video_ad_group',
'smart_ad_group',
'status',
'type',
'sub_type',
'serving_status',
'restricted_region_ids',
'updated_self',
];
protected $casts = [
'campaign_id' => 'int',
'external_id' => 'int',
'campaign_external_id' => 'int',
'region_ids' => 'array',
'negative_keywords' => 'json',
'negative_keyword_shared_set_ids' => 'json',
'mobile_app_ad_group' => 'json',
'dynamic_text_ad_group' => 'json',
'dynamic_text_feed_ad_group' => 'json',
'cpm_banner_user_profile_ad_group' => 'json',
'cpm_video_ad_group' => 'json',
'smart_ad_group' => 'json',
'restricted_region_ids' => 'json',
'updated_self' => 'datetime',
];
public static function boot()
{
parent::boot();
static::created(function (AdGroup $ad_group) {
// Dictionary::whereNotNull('token_id')->each(function (Dictionary $dictionary) use ($campaign) {
// $campaign->dictionaries()->syncWithoutDetaching([
// $dictionary->getKey() => DictionaryCampaign::copyPropertyFromMain($campaign),
// ]);
// });
});
static::updated(function (AdGroup $ad_group) {
// if (DictionaryCampaign::getPropertiesCopyWithPivot()->first(function ($property_name) use ($campaign) {
// return $campaign->{$property_name} !== $campaign->getOriginal($property_name);
// })) {
// $campaign->dictionaryCampaigns()->enabled()->synchronized()->update(
// DictionaryCampaign::copyPropertyFromMain($campaign)
// );
// }
//
// if (self::getPropertiesWatch()->first(function ($property_name) use ($campaign) {
// return $campaign->{$property_name} !== $campaign->getOriginal($property_name);
// })) {
// $campaign->dictionaryCampaigns()->enabled()->synchronized()->forExternal()->update([
// 'updated_need' => Carbon::now(),
// ]);
// }
});
}
public function scopeForUpdatedSelf(Builder $query)
{
$query->whereNotNull("{$query->getModel()->getTable()}.updated_self");
}
}