'datetime', 'password' => 'hashed', ]; // Relationships public function videos() { return $this->hasMany(Video::class); } public function likes() { return $this->belongsToMany(Video::class, 'video_likes')->withTimestamps(); } public function views() { return $this->belongsToMany(Video::class, 'video_views')->withTimestamps(); } public function comments() { return $this->hasMany(Comment::class); } public function playlists() { return $this->hasMany(Playlist::class); } public function getAvatarUrlAttribute() { if ($this->avatar) { return asset('storage/avatars/'.$this->avatar); } return 'https://i.pravatar.cc/150?u='.$this->id; } // Role helper methods public function isSuperAdmin() { return $this->role === 'super_admin'; } public function isAdmin() { return in_array($this->role, ['admin', 'super_admin']); } public function isUser() { return $this->role === 'user' || $this->role === null; } // Placeholder for subscriber count (would need a separate table in full implementation) public function getSubscriberCountAttribute() { // For now, return a placeholder - in production this would come from a subscriptions table return rand(100, 10000); } // Get social links as an array public function getSocialLinksAttribute() { return [ 'twitter' => $this->twitter, 'instagram' => $this->instagram, 'facebook' => $this->facebook, 'youtube' => $this->youtube, 'linkedin' => $this->linkedin, 'tiktok' => $this->tiktok, ]; } // Check if user has any social links public function hasSocialLinks() { return $this->twitter || $this->instagram || $this->facebook || $this->youtube || $this->linkedin || $this->tiktok; } // Get formatted website URL public function getWebsiteUrlAttribute() { if (! $this->website) { return null; } // Add https:// if no protocol is specified if (! preg_match('/^https?:\/\//', $this->website)) { return 'https://'.$this->website; } return $this->website; } }