TIF_E41212062/app/Http/Controllers/RuleController.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()]);
}
}
}