perPage ?? 5; $query = Penyakit::query(); // SEARCH if ($request->search) { $query->where('kode', 'like', '%' . $request->search . '%') ->orWhere('nama', 'like', '%' . $request->search . '%'); } // PAGINATION + URUT KODE $penyakits = $query->orderBy('kode', 'asc') ->paginate($perPage) ->withQueryString(); return view('admin.penyakit.index', compact('penyakits', 'perPage')); } public function create() { // ambil kode terakhir $lastPenyakit = Penyakit::orderBy('kode', 'desc')->first(); // default awal $kode = 'P01'; // jika ada data if ($lastPenyakit) { // ambil angka dari kode $lastNumber = (int) substr($lastPenyakit->kode, 1); // tambah 1 $newNumber = $lastNumber + 1; // format P01 $kode = 'P' . str_pad($newNumber, 2, '0', STR_PAD_LEFT); } return view('admin.penyakit.create', compact('kode')); } public function store(Request $request) { $request->validate([ 'kode' => 'required|unique:penyakits', 'nama' => 'required' ]); Penyakit::create($request->all()); return redirect()->route('penyakit.index') ->with('success', 'Data berhasil ditambahkan'); } public function edit($id) { $penyakit = Penyakit::findOrFail($id); return view('admin.penyakit.edit', compact('penyakit')); } public function update(Request $request, Penyakit $penyakit) { $request->validate([ 'nama' => 'required' ]); $penyakit->update([ 'nama' => $request->nama ]); return redirect()->route('penyakit.index') ->with('success', 'Data penyakit berhasil diupdate'); } public function destroy($id) { Penyakit::destroy($id); return redirect()->route('penyakit.index') ->with('success', 'Data berhasil dihapus'); } public function show($id) { $penyakit = Penyakit::findOrFail($id); return view('admin.penyakit.show', compact('penyakit')); } }