query('search'); $query = DB::table('petugas') ->leftJoin('fasyankes', 'petugas.id_fasyankes', '=', 'fasyankes.id_fasyankes') ->select( 'petugas.*', 'fasyankes.nama_fasyankes' ) ->whereIn('petugas.role', ['admin', 'super_admin']); if (!empty($search)) { $query->where(function ($q) use ($search) { $q->where('petugas.nama_petugas', 'like', "%{$search}%") ->orWhere('petugas.email', 'like', "%{$search}%") ->orWhere('fasyankes.nama_fasyankes', 'like', "%{$search}%"); }); } $admin = $query->orderBy('petugas.created_at', 'desc') ->paginate(10) ->appends($request->all()); $fasyankes = DB::table('fasyankes') ->orderBy('nama_fasyankes', 'asc') ->get(); return view('kelola-admin', compact('admin', 'fasyankes')); } public function store(Request $request) { $request->validate([ 'nama_petugas' => 'required', 'email' => 'required|email', 'id_fasyankes' => 'required', ]); /* |-------------------------------------------------------------------------- | CEK APAKAH FASYANKES SUDAH PUNYA ADMIN |-------------------------------------------------------------------------- */ $cekAdmin = DB::table('petugas') ->where('role', 'admin') ->where('id_fasyankes', $request->id_fasyankes) ->exists(); if ($cekAdmin) { return redirect('/kelola-admin') ->with('error', 'Fasyankes tersebut sudah memiliki admin!'); } $defaultPassword = "12345678"; $lastAdmin = DB::table('petugas') ->where('role', 'admin') ->select(DB::raw("MAX(CAST(SUBSTRING(id_petugas, 3) AS UNSIGNED)) as max_id")) ->first(); $nextNumber = 1; if ($lastAdmin && $lastAdmin->max_id) { $nextNumber = $lastAdmin->max_id + 1; } $newId = "AD" . str_pad($nextNumber, 4, '0', STR_PAD_LEFT); $cekAdmin = DB::table('petugas') ->where('role', 'admin') ->where('id_fasyankes', $request->id_fasyankes) ->exists(); if ($cekAdmin) { return redirect('/kelola-admin') ->with('error', 'Fasyankes yang dipilih sudah memiliki admin.'); } DB::table('petugas')->insert([ 'id_petugas' => $newId, 'nama_petugas' => $request->nama_petugas, 'email' => $request->email, 'password' => Hash::make($defaultPassword), 'role' => 'admin', 'id_fasyankes' => $request->id_fasyankes, // 'status' => 'aktif', 'created_at' => now(), 'updated_at' => now() ]); DB::table('log_aktivitas')->insert([ 'id_petugas' => session('petugas_id'), 'aktivitas' => "Menambahkan admin: {$request->nama_petugas}", 'created_at' => now(), 'updated_at' => now() ]); return redirect('/kelola-admin') ->with('success', 'Admin berhasil ditambahkan! Password default: 12345678'); } public function update(Request $request, $id) { $request->validate([ 'nama_petugas' => 'required', 'email' => 'required|email', 'id_fasyankes' => 'required', // 'status' => 'required', ]); $cekAdmin = DB::table('petugas') ->where('role', 'admin') ->where('id_fasyankes', $request->id_fasyankes) ->where('id_petugas', '!=', $id) ->exists(); if ($cekAdmin) { return redirect('/kelola-admin') ->with('error', 'Fasyankes tersebut sudah memiliki admin!'); } $updateData = [ 'nama_petugas' => $request->nama_petugas, 'email' => $request->email, // 'status' => $request->status, 'id_fasyankes' => $request->id_fasyankes, 'updated_at' => now(), ]; $updated = DB::table('petugas') ->where('id_petugas', $id) ->update($updateData); if ($updated === false) { return redirect('/kelola-admin') ->with('error', 'Data gagal diperbarui.'); } DB::table('log_aktivitas')->insert([ 'id_petugas' => session('petugas_id'), 'aktivitas' => "Mengupdate data petugas: {$request->nama_petugas}", 'created_at' => now(), 'updated_at' => now() ]); return redirect('/kelola-admin') ->with('success', 'Data akun berhasil diperbarui!'); } public function destroy($id) { $petugas = DB::table('petugas') ->where('id_petugas', $id) ->first(); DB::table('petugas') ->where('id_petugas', $id) ->delete(); DB::table('log_aktivitas')->insert([ 'id_petugas' => session('petugas_id'), 'aktivitas' => "Menghapus petugas: " . ($petugas->nama_petugas ?? $id), 'created_at' => now(), 'updated_at' => now() ]); return redirect('/kelola-admin')->with('success', 'Akun berhasil dihapus'); } }