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.'); } }