when(request('search'), fn($q) => $q->where('nama', 'like', '%' . request('search') . '%') ->orWhere('kode', 'like', '%' . request('search') . '%') ) ->orderBy('kode') ->paginate(20); return view('admin.gejala.index', compact('gejala')); } // Tampilkan form tambah gejala public function create() { return view('admin.gejala.form'); } // Simpan gejala baru public function store(Request $request) { $request->validate([ 'kode' => 'required|unique:tbl_gejala,kode|max:10', 'nama' => 'required|max:255', 'bagian' => 'required|in:daun,batang,seluruh,buah', ], [ 'kode.unique' => 'Kode gejala sudah digunakan.', ]); Gejala::create([ 'kode' => strtoupper($request->kode), 'nama' => $request->nama, 'deskripsi' => $request->deskripsi, 'bagian' => $request->bagian, ]); return redirect()->route('admin.gejala.index') ->with('success', 'Gejala "' . $request->kode . '" berhasil ditambahkan.'); } // Tampilkan form edit gejala public function edit(Gejala $gejala) { return view('admin.gejala.form', compact('gejala')); } // Update data gejala public function update(Request $request, Gejala $gejala) { $request->validate([ 'nama' => 'required|max:255', 'bagian' => 'required|in:daun,batang,seluruh,buah', ]); $gejala->update([ 'nama' => $request->nama, 'deskripsi' => $request->deskripsi, 'bagian' => $request->bagian, ]); return redirect()->route('admin.gejala.index') ->with('success', 'Gejala "' . $gejala->kode . '" berhasil diperbarui.'); } // Hapus gejala beserta rule yang menggunakannya public function destroy(Gejala $gejala) { $kode = $gejala->kode; $gejala->delete(); return redirect()->route('admin.gejala.index') ->with('success', 'Gejala "' . $kode . '" berhasil dihapus.'); } }