middleware('auth'); parent::__construct(); } public function index(Request $request) { if ($request->ajax()) { // $data = Rule::with(['penyakit', 'gejala'])->latest(); $data = Penyakit::all(); foreach ($data as $item) { $item->rules = Rule::with(["gejala", "penyakit"])->where('id_penyakit', $item->id)->get(); } return DataTables::of($data) ->addIndexColumn() ->addColumn('penyakit_name', function ($data) { return $data->code . ' - ' . $data->name; }) ->addColumn('gejala_name', function ($data) { $gejala = ""; foreach ($data->rules as $item) { $gejala .= $item->gejala->code . ' - ' . $item->gejala->name . '
'; } return $gejala; }) ->rawColumns(['penyakit_name', 'gejala_name']) ->make(true); } return view('rule.index'); } public function add() { $penyakit = Penyakit::all(); $gejala = Gejala::all(); // Get existing rules to show what's already assigned $existingRules = Rule::all()->groupBy('id_penyakit'); return view('rule.create', compact('penyakit', 'gejala', 'existingRules')); } public function store(Request $request) { $request->validate([ 'id_penyakit' => 'required|exists:penyakit,id', 'id_gejala' => 'nullable|array', 'id_gejala.*' => 'exists:gejala,id', ]); Rule::where("id_penyakit", $request->id_penyakit)->delete(); if ($request->id_gejala == null) { return redirect()->route('rule.index')->with('success', 'Data Rule Berhasil diupdate'); } foreach ($request->id_gejala as $gejalaId) { $rule = new Rule(); $rule->id_penyakit = $request->id_penyakit; $rule->id_gejala = $gejalaId; try { $rule->save(); } catch (\Exception $e) { continue; // Skip if there's an error and continue with the next one } } return redirect()->route('rule.index')->with('success', 'Data Rule Berhasil diupdate'); } public function delete(Request $request) { $id = $request->id; $data = Rule::findOrFail($id); try { $data->delete(); return response()->json(['status' => 'success', 'message' => 'Berhasil Menghapus Data']); } catch (\Throwable $e) { return response()->json(['status' => 'error', 'message' => 'Terjadi Kesalahan: ' . $e->getMessage()]); } } }