'boolean', 'read_at' => 'datetime', ]; public function user(): BelongsTo { return $this->belongsTo(User::class); } public function markAsRead(): void { $this->update(['is_read' => true, 'read_at' => now()]); } public function typeIcon(): string { return match ($this->type) { 'payment_due' => '💰', 'payment_overdue' => '🔴', 'subscription_expiring' => '⚠️', 'subscription_expired' => '🚫', 'payment_received' => '✅', 'admin_message' => '📢', 'new_registration' => '👋', default => '📌', }; } }