*/ use HasFactory, HasMedia, HasUuids; protected $fillable = [ 'post_id', 'social_account_id', 'enabled', 'platform', 'content', 'content_type', 'status', 'platform_post_id', 'platform_url', 'error_message', 'published_at', 'meta', ]; protected function casts(): array { return [ 'enabled' => 'boolean', 'platform' => SocialPlatform::class, 'content_type' => ContentType::class, 'published_at' => 'datetime', 'meta' => 'array', ]; } public function post(): BelongsTo { return $this->belongsTo(Post::class); } public function socialAccount(): BelongsTo { return $this->belongsTo(SocialAccount::class); } public function markAsPublishing(): void { $this->update(['status' => 'publishing']); } public function markAsPublished(string $platformPostId, ?string $platformUrl = null): void { $this->update([ 'status' => 'published', 'platform_post_id' => $platformPostId, 'platform_url' => $platformUrl, 'published_at' => now(), ]); } public function markAsFailed(string $errorMessage): void { $this->update([ 'status' => 'failed', 'error_message' => $errorMessage, ]); } }