*/ use HasFactory, Notifiable, TwoFactorAuthenticatable; /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; } /** * @return HasMany */ public function conversationParticipants(): HasMany { return $this->hasMany(ConversationParticipant::class); } /** * @return BelongsToMany */ public function conversations(): BelongsToMany { return $this->belongsToMany(Conversation::class, 'conversation_participants') ->withPivot(['role', 'joined_at', 'last_read_at', 'muted_until']) ->withTimestamps(); } /** * @return HasMany */ public function messages(): HasMany { return $this->hasMany(Message::class); } /** * Get the user's initials */ public function initials(): string { return Str::of($this->name) ->explode(' ') ->take(2) ->map(fn ($word) => Str::substr($word, 0, 1)) ->implode(''); } }