194 lines
4.1 KiB
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.'
|
|
);
|
|
}
|
|
} |