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

194 lines
4.1 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
$kode = 'G01';
if ($lastGejala) {
$lastNumber = (int) substr($lastGejala->kode, 1);
$newNumber = $lastNumber + 1;
$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',
'mb' => 'required|numeric|min:0|max:1',
'md' => 'required|numeric|min:0|max:1',
]);
// Validasi MB dan MD
if ($request->md > $request->mb) {
return back()
->withInput()
->with(
'error',
'Nilai MD tidak boleh lebih besar dari MB.'
);
}
Gejala::create([
'kode' => $request->kode,
'nama' => $request->nama,
'mb' => $request->mb,
'md' => $request->md,
]);
return redirect()
->route('gejala.index')
->with(
'success',
'Data gejala berhasil ditambahkan.'
);
}
// =========================
// FORM EDIT
// =========================
public function edit($id)
{
$gejala = Gejala::findOrFail($id);
return view(
'admin.gejala.edit',
compact('gejala')
);
}
// =========================
// UPDATE DATA
// =========================
public function update(Request $request, $id)
{
$gejala = Gejala::findOrFail($id);
$request->validate([
'kode' => 'required|unique:gejalas,kode,' . $id,
'nama' => 'required',
'mb' => 'required|numeric|min:0|max:1',
'md' => 'required|numeric|min:0|max:1',
]);
// Validasi MB dan MD
if ($request->md > $request->mb) {
return back()
->withInput()
->with(
'error',
'Nilai MD tidak boleh lebih besar dari MB.'
);
}
$gejala->update([
'kode' => $request->kode,
'nama' => $request->nama,
'mb' => $request->mb,
'md' => $request->md,
]);
return redirect()
->route('gejala.index')
->with(
'success',
'Data gejala berhasil diperbarui.'
);
}
// =========================
// HAPUS DATA
// =========================
public function destroy($id)
{
Gejala::destroy($id);
return redirect()
->route('gejala.index')
->with(
'success',
'Data gejala berhasil dihapus.'
);
}
}