104 lines
2.3 KiB
PHP
104 lines
2.3 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models\Gejala;
|
|
|
|
class GejalaController extends Controller
|
|
{
|
|
// TAMPIL DATA
|
|
public function index(Request $request)
|
|
{
|
|
// jumlah data per halaman
|
|
$perPage = $request->perPage ?? 5;
|
|
|
|
// search
|
|
$query = Gejala::query();
|
|
|
|
if ($request->search) {
|
|
|
|
$query->where('kode', 'like', '%' . $request->search . '%')
|
|
->orWhere('nama', 'like', '%' . $request->search . '%');
|
|
}
|
|
|
|
// pagination
|
|
$gejalas = $query->orderBy('kode', 'asc')
|
|
->paginate($perPage)
|
|
->withQueryString();
|
|
|
|
return view('admin.gejala.index', compact('gejalas', 'perPage'));
|
|
}
|
|
|
|
// FORM TAMBAH
|
|
public function create()
|
|
{
|
|
// ambil kode terakhir
|
|
$lastGejala = Gejala::orderBy('kode', 'desc')->first();
|
|
|
|
// default awal
|
|
$kode = 'G01';
|
|
|
|
// jika ada data
|
|
if ($lastGejala) {
|
|
|
|
// ambil angka dari kode
|
|
$lastNumber = (int) substr($lastGejala->kode, 1);
|
|
|
|
// tambah 1
|
|
$newNumber = $lastNumber + 1;
|
|
|
|
// format jadi G01
|
|
$kode = 'G' . str_pad($newNumber, 2, '0', STR_PAD_LEFT);
|
|
}
|
|
|
|
return view('admin.gejala.create', compact('kode'));
|
|
}
|
|
|
|
// SIMPAN DATA
|
|
public function store(Request $request)
|
|
{
|
|
$request->validate([
|
|
'kode' => 'required|unique:gejalas',
|
|
'nama' => 'required'
|
|
]);
|
|
|
|
Gejala::create($request->all());
|
|
|
|
return redirect()->route('gejala.index')
|
|
->with('success', 'Data berhasil ditambahkan');
|
|
}
|
|
|
|
// FORM EDIT
|
|
public function edit($id)
|
|
{
|
|
$gejala = Gejala::findOrFail($id);
|
|
return view('admin.gejala.edit', compact('gejala'));
|
|
}
|
|
|
|
// UPDATE
|
|
public function update(Request $request, $id)
|
|
{
|
|
$gejala = Gejala::findOrFail($id);
|
|
|
|
$request->validate([
|
|
'kode' => 'required|unique:gejalas,kode,' . $id,
|
|
'nama' => 'required'
|
|
]);
|
|
|
|
$gejala->update([
|
|
'nama' => $request->nama]);
|
|
|
|
return redirect()->route('gejala.index')
|
|
->with('success', 'Data berhasil diupdate');
|
|
}
|
|
|
|
// HAPUS
|
|
public function destroy($id)
|
|
{
|
|
Gejala::destroy($id);
|
|
|
|
return redirect()->route('gejala.index')
|
|
->with('success', 'Data berhasil dihapus');
|
|
}
|
|
} |