id_indikator, true); $penggunaIds = json_decode($riwayat->id_data_pengguna, true); $indikator = Indikator::whereIn('id', $indikatorIds)->get(); $pengguna = DataPengguna::whereIn('id', $penggunaIds)->get(); return view('check.hasil', [ 'id' => $id, 'indikators' => $indikator, 'pengguna' => $pengguna, ]); } public function cetakPDF($id) { $riwayat = RiwayatKonsultasi::find($id); $indikatorIds = json_decode($riwayat->id_indikator, true); $penggunaIds = json_decode($riwayat->id_data_pengguna, true); $indikators = Indikator::whereIn('id', $indikatorIds)->get(); $pengguna = DataPengguna::whereIn('id', $penggunaIds)->get(); $pdf = Pdf::loadView('check.cetak', compact('pengguna', 'indikators')); return $pdf->stream('Hasil_Diagnosa.pdf'); } public function temukanPenyakit(Request $request) { $validator = Validator::make($request->all(), [ 'indikator' => 'required|min:2', 'indikator.*' => 'exists:indikators,kode', 'nama' => 'required|string|max:255', 'email' => 'required|string|max:255', 'nama_kucing' => 'required|string|max:20', 'usia_kucing' => 'required|numeric|min:1', ], [ 'indikator.required' => 'Pilih minimal dua indikator.', 'indikator.min' => 'Minimal dua indikator harus dipilih.', 'nama.required' => 'Nama wajib diisi.', 'email.required' => 'Email wajib diisi.', 'nama_kucing.required' => 'Nama kucing wajib diisi.', 'usia_kucing.required' => 'Usia kucing wajib diisi.', ]); $indicators = $request->indikator; $predictions = CBRService::calculatePrediction($indicators); $ids_data_pengguna = []; DB::beginTransaction(); try { foreach ($predictions as $prediction) { $model = new DataPengguna(); $model->nama = $request->nama; $model->email = $request->email; $model->nama_kucing = $request->nama_kucing; $model->usia_kucing = $request->usia_kucing; $model->kode_indikator = implode(',', $request->indikator); $model->kode_penyakit = $prediction['penyakit']->kode; $model->nilai_cf = $prediction['confidence_score']; $model->save(); $ids_data_pengguna[] = $model->id; } $riwayat = RiwayatKonsultasi::create([ 'id_data_pengguna' => json_encode($ids_data_pengguna), 'id_indikator' => json_encode($indicators), ]); DB::commit(); } catch (\Exception $e) { DB::rollback(); return response()->json(['error' => $e->getMessage()], 500); } return redirect(route('hasil.penyakit', [$riwayat->id])); } public function statistikPenyakit() { // Mengelompokkan data penyakit berdasarkan kode_penyakit dan menghitung jumlahnya $statistik = DataPengguna::select('kode_penyakit', DB::raw('count(*) as jumlah')) ->groupBy('kode_penyakit') ->get(); return view('admin.dashboard', compact('statistik')); } public function diagnosaUlang($id) { // Cari riwayat dan data pengguna terkait $riwayat = RiwayatKonsultasi::findOrFail($id); $dataPengguna = DataPengguna::whereIn('id', json_decode($riwayat->id_data_pengguna, true))->first(); // Simpan data ke session untuk otomatis isi form session([ 'riwayat_id' => $riwayat->id, 'nama' => $dataPengguna->nama, 'email' => $dataPengguna->email, 'nama_kucing' => $dataPengguna->nama_kucing, 'usia_kucing' => $dataPengguna->usia_kucing, 'indikator_terpilih' => json_decode($riwayat->id_indikator, true), ]); // Arahkan ke halaman cek-penyakit return redirect()->route('cek-penyakit'); } }