perPage ?? 5; // search $query = Gejala::query(); if ($request->search) { $query->where('kode', 'like', '%' . $request->search . '%') ->orWhere('nama', 'like', '%' . $request->search . '%'); } // pagination $gejalas = $query->orderBy('kode', 'asc') ->paginate($perPage) ->withQueryString(); return view('admin.gejala.index', compact('gejalas', 'perPage')); } // FORM TAMBAH public function create() { // ambil kode terakhir $lastGejala = Gejala::orderBy('kode', 'desc')->first(); // default awal $kode = 'G01'; // jika ada data if ($lastGejala) { // ambil angka dari kode $lastNumber = (int) substr($lastGejala->kode, 1); // tambah 1 $newNumber = $lastNumber + 1; // format jadi G01 $kode = 'G' . str_pad($newNumber, 2, '0', STR_PAD_LEFT); } return view('admin.gejala.create', compact('kode')); } // SIMPAN DATA public function store(Request $request) { $request->validate([ 'kode' => 'required|unique:gejalas', 'nama' => 'required' ]); Gejala::create($request->all()); return redirect()->route('gejala.index') ->with('success', 'Data berhasil ditambahkan'); } // FORM EDIT public function edit($id) { $gejala = Gejala::findOrFail($id); return view('admin.gejala.edit', compact('gejala')); } // UPDATE public function update(Request $request, $id) { $gejala = Gejala::findOrFail($id); $request->validate([ 'kode' => 'required|unique:gejalas,kode,' . $id, 'nama' => 'required' ]); $gejala->update([ 'nama' => $request->nama]); return redirect()->route('gejala.index') ->with('success', 'Data berhasil diupdate'); } // HAPUS public function destroy($id) { Gejala::destroy($id); return redirect()->route('gejala.index') ->with('success', 'Data berhasil dihapus'); } }