131 lines
4.3 KiB
PHP
131 lines
4.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Penyakit;
|
|
use Illuminate\Http\Request;
|
|
use Yajra\DataTables\Facades\DataTables;
|
|
use Illuminate\Support\Str;
|
|
|
|
class PenyakitController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth');
|
|
parent::__construct();
|
|
}
|
|
|
|
public function index(Request $request)
|
|
{
|
|
if ($request->ajax()) {
|
|
$data = Penyakit::latest();
|
|
|
|
return DataTables::of($data)
|
|
->addIndexColumn()
|
|
->addColumn('action', function ($data) {
|
|
return '<a href="' . route('penyakit.edit', $data->id) . '" class="btn btn-warning btn-rounded btn-fw p-2 mb-1">Ubah</a> ' .
|
|
'<button typ="button" class="mb-1 btn btn-danger btn-rounded btn-fw p-2" id="delete" value="' . $data->id . '">Hapus</button>';
|
|
})
|
|
->addColumn('image', function ($data) {
|
|
if ($data->image) {
|
|
|
|
return '<a href="/storage/' . $data->image . '" target="_blank"><img src="' . asset("storage/$data->image") . '" style="width: 50px"></a>';
|
|
|
|
// return '<img src="' . asset("storage/$data->image") . '" width="30px" height="30px" />';
|
|
}
|
|
return '';
|
|
})
|
|
->rawColumns(['action', 'image'])
|
|
->make(true);
|
|
}
|
|
|
|
return view('penyakit.index');
|
|
}
|
|
|
|
public function add()
|
|
{
|
|
return view('penyakit.create');
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'code' => 'required|max:255|unique:penyakit',
|
|
'name' => 'required|max:255',
|
|
'solution' => 'nullable',
|
|
'image' => 'nullable|mimes:jpeg,jpg,bmp,png|max:10240',
|
|
]);
|
|
|
|
$data = new Penyakit();
|
|
$data->code = $request->code;
|
|
$data->name = $request->name;
|
|
$data->solution = $request->solution;
|
|
|
|
if ($request->hasFile('image')) {
|
|
$image = $request->file('image');
|
|
$imageName = Str::random(5) . date("His") . '.' . $image->extension();
|
|
$image->move(public_path('storage'), $imageName);
|
|
$data->image = $imageName;
|
|
}
|
|
|
|
try {
|
|
$data->save();
|
|
return redirect()->route('penyakit.index')->with('success', 'Data Berhasil Ditambahkan');
|
|
} catch (\Exception $e) {
|
|
return back()->withInput()->withErrors(['error' => $e->getMessage()]);
|
|
}
|
|
}
|
|
|
|
public function edit($id)
|
|
{
|
|
$data = Penyakit::findOrFail($id);
|
|
return view('penyakit.edit', compact('data', 'id'));
|
|
}
|
|
|
|
public function update(Request $request)
|
|
{
|
|
$id = $request->id;
|
|
$request->validate([
|
|
'code' => 'required|max:255|unique:penyakit,code,' . $id,
|
|
'name' => 'required|max:255',
|
|
'solution' => 'nullable',
|
|
'image' => 'nullable|mimes:jpeg,jpg,bmp,png|max:10240',
|
|
]);
|
|
|
|
$data = Penyakit::findOrFail($id);
|
|
$data->code = $request->code;
|
|
$data->name = $request->name;
|
|
$data->solution = $request->solution;
|
|
|
|
if ($request->hasFile('image')) {
|
|
$image = $request->file('image');
|
|
$imageName = Str::random(5) . date("His") . '.' . $image->extension();
|
|
$image->move(public_path('storage'), $imageName);
|
|
$data->image = $imageName;
|
|
}
|
|
|
|
try {
|
|
$data->save();
|
|
return redirect()->route('penyakit.index')->with('success', 'Data Berhasil Diubah');
|
|
} catch (\Exception $e) {
|
|
return back()->withInput()->withErrors(['error' => $e->getMessage()]);
|
|
}
|
|
}
|
|
|
|
|
|
public function delete(Request $request)
|
|
{
|
|
$id = $request->id;
|
|
$data = Penyakit::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()]);
|
|
}
|
|
}
|
|
}
|