*/ use HasApiTokens, HasFactory, Notifiable; protected $fillable = ['public_id', 'name', 'email', 'avatar_url', 'password']; protected $hidden = ['password', 'remember_token']; protected function casts(): array { return ['email_verified_at' => 'datetime', 'password' => 'hashed']; } public function qrWallet(): HasOne { return $this->hasOne(QrWallet::class); } public function qrCodes(): HasMany { return $this->hasMany(QrCode::class); } public function getOrCreateQrWallet(): QrWallet { return $this->qrWallet()->firstOrCreate( [], ['credit_balance' => 0, 'qr_codes_total' => 0, 'scans_total' => 0, 'status' => QrWallet::STATUS_ACTIVE], ); } public function avatarUrl(): ?string { $url = trim((string) $this->avatar_url); return $url !== '' ? $url : null; } }