diff --git a/app/Http/Controllers/Admin/HR/EmployeeController.php b/app/Http/Controllers/Admin/HR/EmployeeController.php
index 46ae2fe..c695f26 100644
--- a/app/Http/Controllers/Admin/HR/EmployeeController.php
+++ b/app/Http/Controllers/Admin/HR/EmployeeController.php
@@ -36,7 +36,9 @@ public function create(): Response
return Inertia::render('admin/hr/employee/create', [
'roles' => $this->service->canViewAll()
- ? Role::where('name', '!=', 'Developer')->get(['id', 'name'])
+ ? Role::where('name', '!=', 'Developer')
+ ->when($this->service->shouldHideAdminBahanBaku(), fn ($q) => $q->where('name', '!=', 'admin-bahan-baku'))
+ ->get(['id', 'name'])
: Role::where('name', '=', $user->roles->first()?->name)->get(['id', 'name']),
'canViewAll' => $this->service->canViewAll(),
]);
@@ -57,7 +59,10 @@ public function edit(User $user): Response
return Inertia::render('admin/hr/employee/edit', [
'employee' => $user,
- 'roles' => Role::where('name', '!=', 'Developer')->get(['id', 'name']),
+ 'roles' => Role::where('name', '!=', 'Developer')
+ ->when($this->service->shouldHideAdminBahanBaku(), fn ($q) => $q->where('name', '!=', 'admin-bahan-baku'))
+ ->get(['id', 'name']),
+ 'canViewAll' => $this->service->canViewAll(),
]);
}
diff --git a/app/Services/Admin/HR/EmployeeService.php b/app/Services/Admin/HR/EmployeeService.php
index 2da4190..e2d5a2a 100644
--- a/app/Services/Admin/HR/EmployeeService.php
+++ b/app/Services/Admin/HR/EmployeeService.php
@@ -57,6 +57,7 @@ public function paginated(int $perPage = 25, string $search = '', string $sort =
$userRoles = auth()->user()->roles->pluck('name');
$q->whereHas('roles', fn ($rq) => $rq->whereIn('name', $userRoles));
})
+ ->when($this->shouldHideAdminBahanBaku(), fn ($q) => $q->whereDoesntHave('roles', fn ($rq) => $rq->where('name', 'admin-bahan-baku')))
->when($search, fn ($q) => $q->whereHas('userProfile', fn ($uq) => $uq->where('full_name', 'like', "%{$search}%")))
->when($filters['employment_status'] ?? null, fn ($q, $status) => $q->whereHas('employee', fn ($eq) => $eq->where('employment_status', $status)))
->when(isset($filters['is_active']) && $filters['is_active'] !== '', fn ($q) => $q->where('is_active', filter_var($filters['is_active'], FILTER_VALIDATE_BOOLEAN)))
diff --git a/resources/js/pages/admin/hr/employee/edit.tsx b/resources/js/pages/admin/hr/employee/edit.tsx
index a926396..a78e6f1 100644
--- a/resources/js/pages/admin/hr/employee/edit.tsx
+++ b/resources/js/pages/admin/hr/employee/edit.tsx
@@ -161,35 +161,41 @@ export default function EmployeeEdit({ employee, roles, canViewAll }: Props) {
*
-