Hidupkan CRUD level-user: store/show/update/destroy + inline form + cegah hapus level terpakai

This commit is contained in:
2026-10-14 11:35:28 +07:00
parent f3818f03f5
commit ff8fc51500
3 changed files with 120 additions and 92 deletions
@@ -7,6 +7,7 @@
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class LevelUserController extends Controller
@@ -43,7 +44,24 @@ public function create()
*/
public function store(Request $request)
{
//
$data = $request->validate(
[
'level_code' => 'required|string|max:10|unique:level_user,level_code',
'level_name' => 'required|string|max:30',
],
[
'level_code.unique' => 'Kode level sudah dipakai, ganti dengan yang unik.',
]
);
$level = LevelPegawai::create([
'level_code' => $data['level_code'],
'level_name' => $data['level_name'],
'create_by' => Auth::user()->nomer ?? Auth::user()->username ?? 'system',
'create_date' => now(),
]);
return response()->json(['success' => true, 'message' => 'Level pengguna berhasil ditambahkan.', 'data' => $level], 201);
}
/**
@@ -54,7 +72,7 @@ public function store(Request $request)
*/
public function show($id)
{
Log::info($id);
return response()->json(['success' => true, 'data' => LevelPegawai::findOrFail($id)]);
}
/**
@@ -65,7 +83,7 @@ public function show($id)
*/
public function edit($id)
{
//
return response()->json(['success' => true, 'data' => LevelPegawai::findOrFail($id)]);
}
/**
@@ -77,7 +95,17 @@ public function edit($id)
*/
public function update(Request $request, $id)
{
//
// level_code tidak bisa diubah (dipakai relasi pegawai.level_pegawai)
$data = $request->validate(['level_name' => 'required|string|max:30']);
$level = LevelPegawai::findOrFail($id);
$level->update([
'level_name' => $data['level_name'],
'update_by' => Auth::id(),
'update_date' => now(),
]);
return response()->json(['success' => true, 'message' => 'Level pengguna berhasil diperbarui.', 'data' => $level]);
}
/**
@@ -88,6 +116,18 @@ public function update(Request $request, $id)
*/
public function destroy($id)
{
//
$level = LevelPegawai::findOrFail($id);
$dipakai = DB::table('pegawai')->where('level_pegawai', $level->level_code)->count();
if ($dipakai > 0) {
return response()->json([
'success' => false,
'message' => "Level {$level->level_code} dipakai {$dipakai} pegawai, tidak bisa dihapus.",
], 409);
}
$level->delete();
return response()->json(['success' => true, 'message' => 'Level pengguna berhasil dihapus.']);
}
}