has('search')) { $search = $request->get('search'); $query->where('name', 'like', "%{$search}%"); } if($request->has('guard_name')) { $guard_name = $request->get('guard_name'); $query->where('guard_name', '=', $guard_name); } $userRole = $query->paginate(10); return Helper::paginateResources($userRole); } public function permission_list(Request $request) { // Ambil nilai guard_name dari query string $guardName = $request->query('guard_name'); // Jika guard_name ada dalam query, filter berdasarkan guard_name if ($guardName) { $permissions = Permission::where('guard_name', $guardName)->orderBy('name','asc')->get(); } else { // Jika guard_name tidak ada, ambil semua permissions $permissions = Permission::all(); } return response()->json($permissions); } public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'guard_name' => 'required|string|max:255', // Pastikan setiap permission ada di tabel permissions ]); $newRole = Role::create([ 'name' => $validated['name'], 'guard_name' => $validated['guard_name'], ]); if (isset($request->permission_check)) { $newRole->syncPermissions($request->permission_check); } return response()->json($newRole, 201); } public function edit($id) { $role = Role::with('permissions')->findOrFail($id); return response()->json($role); } public function update(Request $request, $id) { $role = Role::with('permissions')->findOrFail($id); $validated = $request->validate([ 'name' => 'required|string|max:255', 'guard_name' => 'required|string|max:255', 'permission_check' => 'nullable|array', 'permission_check.*' => 'exists:permissions,id', // Pastikan setiap permission ada di tabel permissions ]); $role->update([ 'name' => $validated['name'], 'guard_name' => $validated['guard_name'], ]); if (isset($validated['permission_check'])) { $permissions = Permission::whereIn('id', $validated['permission_check']) ->where('guard_name', $validated['guard_name']) ->get(); if ($permissions->count() !== count($validated['permission_check'])) { return response()->json(['error' => 'One or more permissions are invalid for the specified guard.'], 422); } $role->syncPermissions($permissions); } return response()->json($role); } public function list_role(Request $request) { $query = Role::all(); $data = [ 'data' => $query ]; return response()->json($data); } public function list_organization(Request $request) { $query = Organization::where('type', 'hospital')->get(); $data = [ 'data' => $query ]; return response()->json($data); } public function store_access(Request $request){ $user = User::create([ 'email' => $request->email, 'username' => $request->username, 'role_id' => $request->roles, 'organization_id' => $request->organizations, 'password' => Hash::make($request->password), ]); $person = Person::updateOrCreate( [ 'id' => $user->person_id ], [ 'name' => $request->name ?? null ] ); $user->person_id = $person->id; $user->save(); return response()->json($user); } // List Access public function list_access(Request $request){ $userAccess = User::query(); if ($request->has('search')) { $search = $request->get('search'); $userAccess->where('name', 'like', "%{$search}%"); } if($request->has('guard_name')) { $guard_name = $request->get('guard_name'); $userAccess->whereHas('role', function ($query) use ($guard_name) { $query->where('guard_name', $guard_name); }); } $userAccess = $userAccess->paginate(10); return Helper::paginateResources($userAccess); } public function edit_access($id){ $userAccess = User::findOrFail($id); return response()->json($userAccess); } public function update_access(Request $request, $id){ $userAccess = User::findOrFail($id); if (!$userAccess) { return response()->json(['error' => 'User Not found.'], 404); } $userAccess->email = $request->email; $userAccess->username = $request->username; $userAccess->role_id = $request->roles; $userAccess->organization_id = $request->organizations; if ($request->password){ $userAccess->password = Hash::make($request->password); } $person = Person::updateOrCreate( [ 'id' => $userAccess->person_id ], [ 'name' => $request->name ?? null ] ); $userAccess->person_id = $person->id; $userAccess->save(); return response()->json($userAccess); } }