when(request('search'), fn($q) => $q->where('nama', 'like', '%' . request('search') . '%') ) ->orderBy('kode') ->paginate(15); return view('admin.penyakit.index', compact('penyakit')); } // Tampilkan form tambah penyakit public function create() { return view('admin.penyakit.form'); } // Simpan penyakit baru ke database public function store(Request $request) { $request->validate([ 'kode' => 'required|unique:tbl_penyakit,kode|max:10', 'nama' => 'required|max:150', 'jenis' => 'required|in:Hama,Penyakit', ], [ 'kode.unique' => 'Kode penyakit sudah digunakan.', ]); $gambarPath = null; if ($request->hasFile('gambar')) { $gambarPath = $request->file('gambar')->store('penyakit', 'public'); } $penyakit = Penyakit::create([ 'kode' => strtoupper($request->kode), 'nama' => $request->nama, 'jenis' => $request->jenis, 'penyebab' => $request->penyebab ?: '-', 'deskripsi' => $request->deskripsi, 'gambar' => $gambarPath, // tambah ini ]); // Simpan solusi jika diisi if ($request->filled('solusi') || $request->filled('pencegahan')) { Solusi::create([ 'id_penyakit' => $penyakit->id, 'solusi' => $request->solusi ?: '-', 'pencegahan' => $request->pencegahan, ]); } return redirect()->route('admin.penyakit.index') ->with('success', 'Penyakit "' . $penyakit->nama . '" berhasil ditambahkan.'); } // Tampilkan form edit penyakit public function edit(Penyakit $penyakit) { $penyakit->load('solusi'); return view('admin.penyakit.form', compact('penyakit')); } // Update data penyakit public function update(Request $request, Penyakit $penyakit) { $request->validate([ 'nama' => 'required|max:150', 'jenis' => 'required|in:Hama,Penyakit', ]); if ($request->hasFile('gambar')) { // Hapus gambar lama jika ada if ($penyakit->gambar) { \Storage::disk('public')->delete($penyakit->gambar); } $gambarPath = $request->file('gambar')->store('penyakit', 'public'); $penyakit->gambar = $gambarPath; } $penyakit->update([ 'nama' => $request->nama, 'jenis' => $request->jenis, 'penyebab' => $request->penyebab ?: '-', 'deskripsi' => $request->deskripsi, 'gambar' => $penyakit->gambar, ]); // Update atau buat solusi Solusi::updateOrCreate( ['id_penyakit' => $penyakit->id], [ 'solusi' => $request->solusi ?: '-', 'pencegahan' => $request->pencegahan, ] ); return redirect()->route('admin.penyakit.index') ->with('success', 'Penyakit "' . $penyakit->nama . '" berhasil diperbarui.'); } // Hapus penyakit beserta rule dan solusinya public function destroy(Penyakit $penyakit) { $nama = $penyakit->nama; $penyakit->delete(); return redirect()->route('admin.penyakit.index') ->with('success', 'Penyakit "' . $nama . '" berhasil dihapus.'); } }