*/ use Billable, HasFactory, HasUsage, HasUuids; public const SUBSCRIPTION_NAME = 'default'; protected $fillable = [ 'owner_id', 'name', 'billing_email', 'plan_id', ]; protected static function booted(): void { static::updated(function (Account $account): void { if ($account->wasChanged('plan_id')) { Feature::for($account)->forget([ WorkspaceLimit::class, SocialAccountLimit::class, MemberLimit::class, MonthlyCreditsLimit::class, ]); } }); } public function owner(): BelongsTo { return $this->belongsTo(User::class, 'owner_id'); } public function plan(): BelongsTo { return $this->belongsTo(Plan::class); } public function users(): HasMany { return $this->hasMany(User::class); } public function workspaces(): HasMany { return $this->hasMany(Workspace::class); } public function invites(): HasMany { return $this->hasMany(Invite::class); } public function hasActiveSubscription(): bool { if (config('trypost.self_hosted')) { return true; } return $this->subscribed(self::SUBSCRIPTION_NAME); } public function isOnTrial(): bool { return $this->subscription(self::SUBSCRIPTION_NAME)?->onTrial() ?? false; } public function stripeEmail(): string { return $this->billing_email ?? $this->owner?->email ?? ''; } public function stripeName(): string { return $this->name; } }