ulid)) { $model->ulid = \Illuminate\Support\Str::ulid(); } }); } protected $casts = [ 'rules' => 'array', 'pixel_config' => 'array', 'tags' => 'array', 'expires_at' => 'datetime', ]; public function workspace(): BelongsTo { return $this->belongsTo(\App\Domains\Workspace\Models\Workspace::class); } public function domain(): BelongsTo { return $this->belongsTo(\App\Domains\Domain\Models\Domain::class); } public function variants(): HasMany { return $this->hasMany(LinkVariant::class); } public function clicks(): HasMany { return $this->hasMany(\App\Domains\Analytics\Models\Click::class); } public function isActive(): bool { if ($this->status !== 'active') { return false; } if ($this->expires_at && $this->expires_at->isPast()) { return false; } return true; } }