Files

134 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers\Parking\Setup\UserLevel;
use App\Http\Controllers\Controller;
use App\Models\LevelPegawai;
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
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$leveluser = Auth()->User()->level_pegawai;
Log::info((int) $leveluser);
$levelAvail = LevelPegawai::where("level_code", ">=", $leveluser)->orderBy("level_id")->get();
return view("setup.UserLevel.level-user", compact("levelAvail"));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
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);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
return response()->json(['success' => true, 'data' => LevelPegawai::findOrFail($id)]);
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
return response()->json(['success' => true, 'data' => LevelPegawai::findOrFail($id)]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
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]);
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
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.']);
}
}