97 lines
3.2 KiB
Plaintext
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.');
|
|
}
|
|
} |