89 lines
2.5 KiB
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.');
|
|
}
|
|
}
|