E31230190_Bintang-Rizki-Sap.../app/Http/Controllers/PenyakitController.php

106 lines
2.3 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Penyakit;
use Illuminate\Http\Request;
class PenyakitController extends Controller
{
public function index(Request $request)
{
// jumlah data
$perPage = $request->perPage ?? 5;
$query = Penyakit::query();
// SEARCH
if ($request->search) {
$query->where('kode', 'like', '%' . $request->search . '%')
->orWhere('nama', 'like', '%' . $request->search . '%');
}
// PAGINATION + URUT KODE
$penyakits = $query->orderBy('kode', 'asc')
->paginate($perPage)
->withQueryString();
return view('admin.penyakit.index', compact('penyakits', 'perPage'));
}
public function create()
{
// ambil kode terakhir
$lastPenyakit = Penyakit::orderBy('kode', 'desc')->first();
// default awal
$kode = 'P01';
// jika ada data
if ($lastPenyakit) {
// ambil angka dari kode
$lastNumber = (int) substr($lastPenyakit->kode, 1);
// tambah 1
$newNumber = $lastNumber + 1;
// format P01
$kode = 'P' . str_pad($newNumber, 2, '0', STR_PAD_LEFT);
}
return view('admin.penyakit.create', compact('kode'));
}
public function store(Request $request)
{
$request->validate([
'kode' => 'required|unique:penyakits',
'nama' => 'required'
]);
Penyakit::create($request->all());
return redirect()->route('penyakit.index')
->with('success', 'Data berhasil ditambahkan');
}
public function edit($id)
{
$penyakit = Penyakit::findOrFail($id);
return view('admin.penyakit.edit', compact('penyakit'));
}
public function update(Request $request, Penyakit $penyakit)
{
$request->validate([
'nama' => 'required'
]);
$penyakit->update([
'nama' => $request->nama
]);
return redirect()->route('penyakit.index')
->with('success', 'Data penyakit berhasil diupdate');
}
public function destroy($id)
{
Penyakit::destroy($id);
return redirect()->route('penyakit.index')
->with('success', 'Data berhasil dihapus');
}
public function show($id)
{
$penyakit = Penyakit::findOrFail($id);
return view('admin.penyakit.show', compact('penyakit'));
}
}