*/ use HasFactory, SoftDeletes; protected $guarded = ['id']; protected static function newFactory(): LinkFactory { return LinkFactory::new(); } protected static function booted(): void { static::creating(function (self $model) { if (empty($model->ulid)) { $model->ulid = Str::ulid(); } }); } protected $casts = [ 'rules' => 'array', 'pixel_config' => 'array', 'tags' => 'array', 'expires_at' => 'datetime', ]; /** @return BelongsTo */ public function workspace(): BelongsTo { return $this->belongsTo(Workspace::class); } /** @return BelongsTo */ public function domain(): BelongsTo { return $this->belongsTo(Domain::class); } /** @return HasMany */ public function variants(): HasMany { return $this->hasMany(LinkVariant::class); } /** @return HasMany */ public function clicks(): HasMany { return $this->hasMany(Click::class); } public function isActive(): bool { if ($this->status !== 'active') { return false; } if ($this->expires_at && $this->expires_at->isPast()) { return false; } return true; } }