$jadwalKerja * @property-read int|null $jadwal_kerja_count * @property-read \App\Models\Kantor|null $kantor * @property-read \Illuminate\Database\Eloquent\Collection $lemburs * @property-read int|null $lemburs_count * @property-read \Illuminate\Notifications\DatabaseNotificationCollection $notifications * @property-read int|null $notifications_count * @property-read \Illuminate\Database\Eloquent\Collection $roles * @property-read int|null $roles_count * @property-read \Illuminate\Database\Eloquent\Collection $tokens * @property-read int|null $tokens_count * @method static \Database\Factories\UserFactory factory($count = null, $state = []) * @method static \Illuminate\Database\Eloquent\Builder|User newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|User newQuery() * @method static \Illuminate\Database\Eloquent\Builder|User onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|User query() * @method static \Illuminate\Database\Eloquent\Builder|User whereAlamat($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereDeletedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereEmail($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereEmailVerifiedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereFoto($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereIdDivisi($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereIdJabatan($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereIdKantor($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereIsFaceRegistered($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereNamaLengkap($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereNik($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereNoTelp($value) * @method static \Illuminate\Database\Eloquent\Builder|User wherePassword($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereRememberToken($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereSisaCuti($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereStatusAktif($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereTglBergabung($value) * @method static \Illuminate\Database\Eloquent\Builder|User whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|User withTrashed(bool $withTrashed = true) * @method static \Illuminate\Database\Eloquent\Builder|User withoutTrashed() * @mixin \Eloquent */ class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable, SoftDeletes; protected $fillable = [ 'nik', 'nama_lengkap', 'email', 'no_telp', 'alamat', 'password', 'foto', 'id_kantor', 'id_divisi', 'id_jabatan', 'status_aktif', 'tgl_bergabung', 'is_face_registered', 'sisa_cuti', ]; protected $hidden = ['password', 'remember_token']; public function roles(): BelongsToMany { return $this->belongsToMany(Role::class, 'detail_user_roles', 'id_user', 'id_role'); } public function hasPermission($permissionSlug): bool { return $this->roles()->whereHas('permissions', function ($query) use ($permissionSlug) { $query->where('slug', $permissionSlug); })->exists(); } public function isGlobalAdmin(): bool { return $this->roles->contains(function ($role) { return in_array(strtolower($role->nama_role), ['admin', 'super admin', 'super_admin']); }); } public function isSuperAdmin(): bool { return $this->roles->contains(function ($role) { return in_array(strtolower($role->nama_role), ['super admin', 'super_admin']); }); } public function kantor(): BelongsTo { return $this->belongsTo(Kantor::class, 'id_kantor', 'id_kantor'); } public function divisi(): BelongsTo { return $this->belongsTo(Divisi::class, 'id_divisi', 'id_divisi'); } public function jabatan(): BelongsTo { return $this->belongsTo(Jabatan::class, 'id_jabatan', 'id_jabatan'); } public function jadwalKerja(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(JadwalKerja::class, 'id_user', 'id'); } public function dataWajah() { return $this->hasOne(DataWajah::class, 'id_user', 'id'); } public function lemburs(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Lembur::class, 'id_user', 'id'); } }