134 lines
3.8 KiB
PHP
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.']);
|
|
}
|
|
}
|