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

89 lines
2.5 KiB
PHP

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