E31230190_Bintang-Rizki-Sap.../app/Http/Controllers/GejalaController.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');
}
}