$pusatMengundi, 'quotas' => $this->sortedQuery( PositionQuota::query() ->with(['position']) ->where('pusat_mengundi_id', $pusatMengundi->id) ->whereNull('saluran_mengundi_id'), ['quota'], 'id' )->paginate(25)->withQueryString(), ]); } public function create(PusatMengundi $pusatMengundi): View { return view('admin.setup.quotas.pusat-create', [ 'pusat' => $pusatMengundi, 'quota' => new PositionQuota, 'positions' => Position::query()->orderBy('sort_order')->orderBy('code')->get(), ]); } public function store(UpsertPositionQuotaRequest $request, PusatMengundi $pusatMengundi): RedirectResponse { PositionQuota::query()->updateOrCreate( [ 'election_id' => $pusatMengundi->election_id, 'pusat_mengundi_id' => $pusatMengundi->id, 'saluran_mengundi_id' => null, 'position_id' => $request->validated('position_id'), ], ['quota' => $request->validated('quota')], ); return redirect()->route('admin.setup.pusat.kuota.index', $pusatMengundi) ->with('status', 'Kuota peringkat pusat telah disimpan.'); } public function edit(PusatMengundi $pusatMengundi, PositionQuota $quota): View { abort_unless($quota->pusat_mengundi_id === $pusatMengundi->id && $quota->saluran_mengundi_id === null, 404); return view('admin.setup.quotas.pusat-edit', [ 'pusat' => $pusatMengundi, 'quota' => $quota->load('position'), 'positions' => Position::query()->orderBy('sort_order')->orderBy('code')->get(), ]); } public function update(UpsertPositionQuotaRequest $request, PusatMengundi $pusatMengundi, PositionQuota $quota): RedirectResponse { abort_unless($quota->pusat_mengundi_id === $pusatMengundi->id && $quota->saluran_mengundi_id === null, 404); $quota->update(['quota' => $request->validated('quota')]); return redirect()->route('admin.setup.pusat.kuota.index', $pusatMengundi) ->with('status', 'Kuota peringkat pusat telah dikemas kini.'); } public function destroy(PusatMengundi $pusatMengundi, PositionQuota $quota): RedirectResponse { abort_unless($quota->pusat_mengundi_id === $pusatMengundi->id && $quota->saluran_mengundi_id === null, 404); $quota->forceDelete(); return redirect()->route('admin.setup.pusat.kuota.index', $pusatMengundi) ->with('status', 'Kuota peringkat pusat telah dipadam.'); } }