*/ use HasApiTokens, HasFactory, HasRoles, LogsActivity, Notifiable, SoftDeletes; public const ROLE_ADMIN = 'admin'; public const ROLE_RESIDENT = 'resident'; public const ROLE_DRIVER = 'driver'; public const ROLE_HELPER = 'helper'; public const ROLE_SCANNER = 'scanner'; public const ROLE_STORE_PARTNER = 'store_partner'; public const STATUS_ACTIVE = 'active'; public const STATUS_SUSPENDED = 'suspended'; public const STATUS_PENDING = 'pending'; protected $fillable = [ 'uuid', 'email', 'phone', 'password', 'role', 'status', 'first_name', 'middle_name', 'last_name', 'avatar_path', 'preferred_language', 'fcm_token', ]; protected $hidden = [ 'password', 'remember_token', ]; protected static function booted(): void { static::creating(function (self $user): void { if (empty($user->uuid)) { $user->uuid = (string) Str::uuid(); } }); } protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'phone_verified_at' => 'datetime', 'last_login_at' => 'datetime', 'password' => 'hashed', ]; } public function getActivitylogOptions(): LogOptions { return LogOptions::defaults() ->logOnly(['email', 'phone', 'role', 'status', 'first_name', 'last_name']) ->logOnlyDirty() ->dontSubmitEmptyLogs(); } public function getFullNameAttribute(): string { return trim(implode(' ', array_filter([ $this->first_name, $this->middle_name, $this->last_name, ]))); } }