MIF_E31221322/app/Http/Controllers/MasterData/RuleExpertController.php

66 lines
2.4 KiB
PHP

<?php
namespace App\Http\Controllers\MasterData;
use App\Http\Controllers\Controller;
use App\Models\Indicator;
use App\Models\RuleExpert;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
class RuleExpertController extends Controller
{
public function index()
{
$indicators = Indicator::whereDoesntHave('expertRules')->orderBy('created_at', 'desc')->get();
return view('master-data.aturan.rule_expert', compact('indicators'));
}
public function store(Request $request)
{
$customMessage = [
'indicator.required' => 'Harap pilih indikator',
'indicator.exists' => 'Indikator tidak ditemukan',
'parameter_type.required' => 'Jenis parameter wajib diisi',
'parameter_type.string' => 'Jenis parameter harus berupa teks',
'parameter_type.max' => 'Jenis parameter maksimal 25 karakter',
'description.required' => 'Deskripsi wajib diisi',
'description.string' => 'Deskripsi harus berupa teks',
'description.max' => 'Deskripsi maksimal 40 karakter',
'cf.required' => 'Nilai CF wajib diisi',
'cf.numeric' => 'Nilai CF harus berupa angka',
'cf.max' => 'Nilai CF maksimal 1',
];
$validator = Validator::make($request->all(), [
'indicator' => 'required|exists:indicators,id',
'parameter_type' => 'required|string|max:25',
'description' => 'required|string|max:40',
'cf' => 'required|numeric|min:-1|max:1',
], $customMessage);
if ($validator->fails()) {
toast($validator->messages()->all()[0], 'error')->position('top-right')->autoclose(3000);
return redirect()->back()->withInput();
}
try {
$expertRule = new RuleExpert();
$expertRule->indicator_id = $request->indicator;
$expertRule->parameter_type = $request->parameter_type;
$expertRule->description = $request->description;
$expertRule->cf = $request->cf;
$expertRule->save();
toast('Data berhasil disimpan', 'success')->position('top-right')->autoclose(3000);
return redirect()->back();
} catch (\Throwable $th) {
//throw $th;
toast('Terjadi kesalahan', 'error')->position('top')->autoclose(3000);
return redirect()->back();
}
}
}