TIF_E41212062/app/Http/Controllers/GejalaController.php

105 lines
3.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Models\Gejala;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
use Yajra\DataTables\Facades\DataTables;
class GejalaController extends Controller
{
public function __construct()
{
$this->middleware('auth');
parent::__construct();
}
public function index(Request $request)
{
if ($request->ajax()) {
$data = Gejala::latest();
return DataTables::of($data)
->addIndexColumn()
->addColumn('action', function ($data) {
return '<a href="' . route('gejala.edit', $data->id) . '" class="btn btn-warning btn-rounded btn-fw p-2">Ubah</a> ' .
'<button type="button" class="btn btn-danger btn-rounded btn-fw p-2" id="delete" value="' . $data->id . '">Hapus</button>';
})
->rawColumns(['action'])
->make(true);
}
return view('gejala.index');
}
public function add()
{
return view('gejala.create');
}
public function store(Request $request)
{
$request->validate([
'code' => 'required|max:255|unique:gejala',
'name' => 'required|max:255',
'value_cf_pakar' => 'required|numeric|between:0,1',
]);
$data = new Gejala();
$data->code = $request->code;
$data->name = $request->name;
$data->value_cf_pakar = $request->value_cf_pakar;
try {
$data->save();
return redirect()->route('gejala.index')->with('success', 'Data Berhasil Ditambahkan');
} catch (\Exception $e) {
return back()->withInput()->withErrors(['error' => $e->getMessage()]);
}
}
public function edit($id)
{
$data = Gejala::findOrFail($id);
return view('gejala.edit', compact('data', 'id'));
}
public function update(Request $request)
{
$id = $request->id;
$request->validate([
'code' => 'required|max:255|unique:gejala,code,' . $id,
'name' => 'required|max:255',
'value_cf_pakar' => 'required|numeric|between:0,1',
]);
$data = Gejala::findOrFail($id);
$data->code = $request->code;
$data->name = $request->name;
$data->value_cf_pakar = $request->value_cf_pakar;
$data->save();
return redirect()->route('gejala.index')->with('success', 'Data Berhasil Diubah');
}
public function delete(Request $request)
{
$id = $request->id;
$data = Gejala::findOrFail($id);
try {
$data->delete();
return response()->json(['status' => 'success', 'message' => 'Berhasil Menghapus Data']);
} catch (\Illuminate\Database\QueryException $ex) {
if ($ex->getCode() === '23000')
return response()->json(['status' => 'error', 'message' => 'Gagal Menghapus Data: Terdapat Ketergantungan Data.']);
} catch (\Throwable $e) {
return response()->json(['status' => 'error', 'message' => 'Terjadi Kesalahan: ' . $e->getMessage()]);
}
}
}