MIF_E31231754/app/Http/Controllers/Admin/PenilaianWargaController.ph...

97 lines
3.2 KiB
Plaintext

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\PenilaianWarga;
use App\Models\Warga;
use App\Models\PeriodeSeleksi;
use App\Models\Kriteria;
use Illuminate\Http\Request;
class PenilaianWargaController extends Controller
{
public function index()
{
$periode = PeriodeSeleksi::where('status', 'aktif')->latest()->get();
return view('admin.penilaian.index', compact('periode'));
}
public function create()
{
$warga = Warga::where('is_aktif', true)->orderBy('nama')->get();
$periode = PeriodeSeleksi::where('status', 'aktif')->latest()->get();
$kriteria = Kriteria::orderBy('kode')->get();
return view('admin.penilaian.create', compact('warga', 'periode', 'kriteria'));
}
public function store(Request $request)
{
$request->validate([
'warga_id' => 'required|exists:warga,id',
'periode_id' => 'required|exists:periode_seleksi,id',
'c1' => 'required|numeric|min:0',
'c2' => 'required|numeric|min:0',
'c3' => 'required|numeric|min:0',
'c4' => 'required|numeric|min:0',
'c5' => 'required|numeric|min:0',
'c6' => 'required|numeric|min:0',
'c7' => 'required|numeric|min:0',
]);
// Cek duplikat
$exists = PenilaianWarga::where('warga_id', $request->warga_id)
->where('periode_id', $request->periode_id)
->exists();
if ($exists) {
return back()->with('error', 'Warga ini sudah dinilai pada periode tersebut.');
}
PenilaianWarga::create($request->all());
return redirect()->route('admin.penilaian.index')
->with('success', 'Penilaian berhasil disimpan.');
}
public function show(PenilaianWarga $penilaian)
{
$penilaian->load('warga', 'periode');
$kriteria = Kriteria::orderBy('kode')->get();
return view('admin.penilaian.show', compact('penilaian', 'kriteria'));
}
public function edit(PenilaianWarga $penilaian)
{
$warga = Warga::where('is_aktif', true)->orderBy('nama')->get();
$periode = PeriodeSeleksi::where('status', 'aktif')->latest()->get();
$kriteria = Kriteria::orderBy('kode')->get();
return view('admin.penilaian.edit', compact('penilaian', 'warga', 'periode', 'kriteria'));
}
public function update(Request $request, PenilaianWarga $penilaian)
{
$request->validate([
'c1' => 'required|numeric|min:0',
'c2' => 'required|numeric|min:0',
'c3' => 'required|numeric|min:0',
'c4' => 'required|numeric|min:0',
'c5' => 'required|numeric|min:0',
'c6' => 'required|numeric|min:0',
'c7' => 'required|numeric|min:0',
]);
$penilaian->update($request->only('c1','c2','c3','c4','c5','c6','c7'));
return redirect()->route('admin.penilaian.index')
->with('success', 'Penilaian berhasil diperbarui.');
}
public function destroy(PenilaianWarga $penilaian)
{
$penilaian->delete();
return redirect()->route('admin.penilaian.index')
->with('success', 'Penilaian berhasil dihapus.');
}
}