MIF_E31211936/app/Http/Controllers/RuleController.php

146 lines
4.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\disease;
use App\Models\rule;
use App\Models\symptom;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class RuleController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$rules = Rule::join('diseases', 'rules.disease_id', '=', 'diseases.id')
->join('symptoms', 'rules.symptom_id', '=', 'symptoms.id')
->select('rules.code', 'symptoms.code as codes' , 'diseases.name as disease_name', 'symptoms.name as symptom_name')
->get();
$rules2 = Symptom::all();
$diseases = Disease::all();
$rulesByDisease = [];
foreach ($diseases as $disease) {
$rulesByDisease[$disease->id] = Rule::where('disease_id', $disease->id)->pluck('symptom_id')->toArray();
}
return view('admin.rule.rule', compact('rules', 'rules2', 'diseases', 'rulesByDisease'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(Request $request)
{
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$data = $request->validate([
'rules' => 'required|array',
'rules.*.code' => 'required|string',
'rules.*.disease_id' => 'required|integer',
'rules.*.symptom_id' => 'required|integer',
]);
$errors = [];
foreach ($data['rules'] as $ruleData) {
$ruleData['code'] = str_replace('G', 'R', $ruleData['code']);
$existingRule = Rule::where('disease_id', $ruleData['disease_id'])
->where('symptom_id', $ruleData['symptom_id'])
->first();
if ($existingRule) {
$errors[] = "The symptom_id {$ruleData['symptom_id']} already exists for disease_id {$ruleData['disease_id']}.";
continue;
}
$rule = new Rule();
$rule->code = $ruleData['code'];
$rule->disease_id = $ruleData['disease_id'];
$rule->symptom_id = $ruleData['symptom_id'];
$rule->save();
}
if (count($errors) > 0) {
return response()->json(['success' => false, 'message' => 'Rules gagal disimpan.', 'errors' => $errors]);
} else {
return response()->json(['success' => true, 'message' => 'Rules berhasil disimpan.']);
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit($id)
{
//
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function deleteUnchecked(Request $request)
{
$uncheckedSymptoms = $request->input('unchecked_symptoms');
try {
foreach ($uncheckedSymptoms as $symptom) {
Rule::where('disease_id', $symptom['disease_id'])
->where('symptom_id', $symptom['symptom_id'])
->delete();
}
return response()->json(['message' => 'Unchecked symptoms data successfully deleted'], 200);
} catch (\Exception $e) {
return response()->json(['error' => $e->getMessage()], 500);
}
}
}