*/ use HasFactory, Notifiable; use SoftDeletes; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'username', 'password', 'phone', 'region_id', 'cabang_id' ]; /** * The attributes that should be hidden for serialization. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * Get the attributes that should be cast. * * @return array */ protected function casts(): array { return [ 'email_verified_at' => 'datetime', 'password' => 'hashed', ]; } /** * Helper untuk mendapatkan ID Cabang & Region milik user */ public function getMyCabangAndRegionId(): array { // Jika User punya cabang_id (Level AM / MR) if ($this->cabang_id) { $cabang = \DB::table('cabang')->where('id', $this->cabang_id)->first(); return [ 'cabang' => (int) $this->cabang_id, 'region' => $cabang ? (int) $cabang->region_id : null ]; } // Jika User level Region (Admin Region / MOM Region) // Pastikan kolom 'region_id' ada di tabel users Anda return [ 'cabang' => null, 'region' => $this->region_id ? (int) $this->region_id : null ]; } public function cabangs() { // Relasi Many-to-Many melalui tabel pivot user_has_cabang return $this->belongsToMany(Cabang::class, 'user_has_cabang', 'user_id', 'cabang_id'); } /** * Mendapatkan ID Region berdasarkan penugasan cabang pertama */ public function getAssignedRegionId() { $firstAssignment = $this->cabangs()->first(); return $firstAssignment ? $firstAssignment->region_id : null; } }