MIF_E31230333/app/Http/Controllers/Admin/PenyakitController.php

126 lines
3.8 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Penyakit;
use App\Models\Solusi;
use Illuminate\Http\Request;
class PenyakitController extends Controller
{
// Tampilkan daftar semua penyakit
public function index()
{
$penyakit = Penyakit::withCount('rules')
->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.');
}
}