146 lines
4.1 KiB
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);
|
|
}
|
|
}
|
|
}
|