perPage ?? 5; // search $query = Gejala::query(); if ($request->search) { $query->where('kode', 'like', '%' . $request->search . '%') ->orWhere('nama', 'like', '%' . $request->search . '%'); } // pagination $gejalas = $query->orderBy('kode', 'asc') ->paginate($perPage) ->withQueryString(); return view( 'admin.gejala.index', compact('gejalas', 'perPage') ); } // ========================= // FORM TAMBAH // ========================= public function create() { // ambil kode terakhir $lastGejala = Gejala::orderBy('kode', 'desc')->first(); // default $kode = 'G01'; if ($lastGejala) { $lastNumber = (int) substr($lastGejala->kode, 1); $newNumber = $lastNumber + 1; $kode = 'G' . str_pad( $newNumber, 2, '0', STR_PAD_LEFT ); } return view( 'admin.gejala.create', compact('kode') ); } // ========================= // SIMPAN DATA // ========================= public function store(Request $request) { $request->validate([ 'kode' => 'required|unique:gejalas', 'nama' => 'required', 'mb' => 'required|numeric|min:0|max:1', 'md' => 'required|numeric|min:0|max:1', ]); // Validasi MB dan MD if ($request->md > $request->mb) { return back() ->withInput() ->with( 'error', 'Nilai MD tidak boleh lebih besar dari MB.' ); } Gejala::create([ 'kode' => $request->kode, 'nama' => $request->nama, 'mb' => $request->mb, 'md' => $request->md, ]); return redirect() ->route('gejala.index') ->with( 'success', 'Data gejala berhasil ditambahkan.' ); } // ========================= // FORM EDIT // ========================= public function edit($id) { $gejala = Gejala::findOrFail($id); return view( 'admin.gejala.edit', compact('gejala') ); } // ========================= // UPDATE DATA // ========================= public function update(Request $request, $id) { $gejala = Gejala::findOrFail($id); $request->validate([ 'kode' => 'required|unique:gejalas,kode,' . $id, 'nama' => 'required', 'mb' => 'required|numeric|min:0|max:1', 'md' => 'required|numeric|min:0|max:1', ]); // Validasi MB dan MD if ($request->md > $request->mb) { return back() ->withInput() ->with( 'error', 'Nilai MD tidak boleh lebih besar dari MB.' ); } $gejala->update([ 'kode' => $request->kode, 'nama' => $request->nama, 'mb' => $request->mb, 'md' => $request->md, ]); return redirect() ->route('gejala.index') ->with( 'success', 'Data gejala berhasil diperbarui.' ); } // ========================= // HAPUS DATA // ========================= public function destroy($id) { Gejala::destroy($id); return redirect() ->route('gejala.index') ->with( 'success', 'Data gejala berhasil dihapus.' ); } }