*/ use HasFactory; protected $fillable = [ 'feed_id', 'platform_channel_id', 'article_id', 'approval_status', 'publish_status', 'validated_at', ]; protected $casts = [ 'approval_status' => ApprovalStatusEnum::class, 'publish_status' => PublishStatusEnum::class, 'validated_at' => 'datetime', ]; /** * @return BelongsTo */ public function route(): BelongsTo { return $this->belongsTo(Route::class, 'feed_id', 'feed_id') ->where('platform_channel_id', $this->platform_channel_id); } /** * @return BelongsTo */ public function article(): BelongsTo { return $this->belongsTo(Article::class); } /** * @return BelongsTo */ public function feed(): BelongsTo { return $this->belongsTo(Feed::class); } /** * @return BelongsTo */ public function platformChannel(): BelongsTo { return $this->belongsTo(PlatformChannel::class); } public function isPending(): bool { return $this->approval_status === ApprovalStatusEnum::PENDING; } public function isApproved(): bool { return $this->approval_status === ApprovalStatusEnum::APPROVED; } public function isRejected(): bool { return $this->approval_status === ApprovalStatusEnum::REJECTED; } public function approve(): void { $this->update(['approval_status' => ApprovalStatusEnum::APPROVED]); event(new RouteArticleApproved($this)); } public function reject(): void { $this->update(['approval_status' => ApprovalStatusEnum::REJECTED]); } }