71 lines
2.2 KiB
PHP
71 lines
2.2 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Penyakit;
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Requests\PenyakitRequest;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use RealRashid\SweetAlert\Facades\Alert;
|
|
|
|
class PenyakitController extends Controller
|
|
{
|
|
public function index()
|
|
{
|
|
$penyakit = Penyakit::all();
|
|
return view('masterdata.data_penyakit', compact('penyakit'));
|
|
}
|
|
|
|
public function store(PenyakitRequest $request)
|
|
{
|
|
$data = $request->validated();
|
|
if ($request->hasFile('gambar')) {
|
|
$data['gambar'] = $request->file('gambar')->store('penyakit', 'public');
|
|
}
|
|
Penyakit::create($data);
|
|
Alert::toast('Berhasil Menambahkan Penyakit ', 'success')->position('top-end');
|
|
return redirect()->back();
|
|
}
|
|
|
|
public function update(Request $request, $id)
|
|
{
|
|
$validatedData = $request->validate([
|
|
'nama_penyakit' => 'required|string|max:255',
|
|
'penjelasan' => 'required|string',
|
|
'penanganan' => 'required|string',
|
|
]);
|
|
|
|
$penyakit = Penyakit::findOrFail($id);
|
|
|
|
if ($request->hasFile('gambar')) {
|
|
if ($penyakit->gambar && Storage::exists('public/' . $penyakit->gambar)) {
|
|
Storage::delete('public/' . $penyakit->gambar);
|
|
}
|
|
|
|
$gambar = $request->file('gambar');
|
|
$gambar->storeAs('public/penyakit', $gambar->hashName());
|
|
$validatedData['gambar'] = 'penyakit/' . $gambar->hashName();
|
|
} else {
|
|
$validatedData['gambar'] = $penyakit->gambar;
|
|
}
|
|
|
|
try {
|
|
$penyakit->update($validatedData);
|
|
|
|
Alert::toast('Berhasil Mengupdate Data Penyakit', 'success')->position('top-end');
|
|
return redirect()->back();
|
|
} catch (\Throwable $th) {
|
|
Alert::toast('Gagal Mengupdate Data Penyakit', 'error')->position('top-end');
|
|
return redirect()->back();
|
|
}
|
|
}
|
|
|
|
public function destroy($id)
|
|
{
|
|
$user = Penyakit::findOrFail($id);
|
|
$user->delete();
|
|
Alert::toast('Berhasil Menghapus Penyakit', 'success')->position('top-end');
|
|
return redirect()->back();
|
|
}
|
|
}
|