MIF_E31230356/app/Http/Controllers/Admin/KelasController.php

114 lines
2.8 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Kelas;
use Illuminate\Http\Request;
use Illuminate\Validation\Rule;
class KelasController extends Controller
{
public function index(Request $request)
{
$query = Kelas::query();
// SEARCH
if ($request->has('search')) {
$search = $request->search;
$query->where('nama_kelas', 'like', "%$search%")
->orWhere('id_kelas', 'like', "%$search%");
}
// SHOW PER PAGE
$perPage = $request->get('perPage', 10);
$kelass = $query->paginate($perPage)->appends($request->all());
return view('admin.kelas.index', compact('kelass'));
}
public function store(Request $request)
{
$validated = $request->validate([
'nama_kelas' => [
'required',
'string',
'max:50',
Rule::unique('kelas')->where(function ($query) use ($request) {
return $query->where('tingkat', $request->tingkat);
}),
],
'tingkat' => 'required|in:X,XI,XII',
], [
'nama_kelas.unique' => 'Nama kelas sudah ada di tingkat ini!',
]);
// Tentukan prefix berdasarkan tingkat
if ($validated['tingkat'] == 'X') {
$prefix = '10';
} elseif ($validated['tingkat'] == 'XI') {
$prefix = '11';
} else {
$prefix = '12';
}
// Cari id terakhir berdasarkan prefix
$last = Kelas::where('id_kelas', 'like', $prefix.'%')
->orderBy('id_kelas', 'desc')
->first();
if ($last) {
$newId = $last->id_kelas + 1;
} else {
$newId = $prefix . '01';
}
Kelas::create([
'id_kelas' => $newId,
'nama_kelas' => $validated['nama_kelas'],
'tingkat' => $validated['tingkat'],
]);
return redirect()->route('admin.kelas.index')
->with('success', 'Data kelas berhasil ditambahkan!');
}
public function update(Request $request, $id_kelas)
{
$kelas = Kelas::findOrFail($id_kelas);
$validated = $request->validate([
'nama_kelas' => [
'required',
'string',
'max:50',
Rule::unique('kelas')->where(function ($query) use ($request) {
return $query->where('tingkat', $request->tingkat);
})->ignore($id, 'id_kelas'),
],
'tingkat' => 'required|in:X,XI,XII',
], [
'nama_kelas.unique' => 'Nama kelas sudah ada di tingkat ini!',
]);
$kelas->update($validated);
return redirect()->route('admin.kelas.index')
->with('success', 'Data kelas berhasil diupdate!');
}
public function destroy($id_kelas)
{
$kelas = Kelas::findOrFail($id_kelas);
$kelas->delete();
return redirect()->route('admin.kelas.index')
->with('success', 'Data kelas berhasil dihapus!');
}
}