101 lines
3.0 KiB
PHP
101 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Rule;
|
|
use App\Models\Penyakit;
|
|
use App\Models\Gejala;
|
|
use Illuminate\Http\Request;
|
|
use Yajra\DataTables\Facades\DataTables;
|
|
|
|
class RuleController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->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 . '<br>';
|
|
}
|
|
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()]);
|
|
}
|
|
}
|
|
}
|