PoliceEscort::query()->with(['election', 'pusatMengundi', 'saluranMengundi'])->orderBy('name')->paginate(10, ['*'], 'police_page'), 'kkmRepresentatives' => KkmRepresentative::query()->with(['election', 'pusatMengundi'])->orderBy('name')->paginate(10, ['*'], 'kkm_page'), 'jkmRepresentatives' => JkmRepresentative::query()->with(['election', 'pusatMengundi'])->orderBy('name')->paginate(10, ['*'], 'jkm_page'), 'elections' => Election::query()->orderByDesc('id')->get(), 'pusats' => PusatMengundi::query()->orderBy('name')->get(), 'salurans' => SaluranMengundi::query()->with('pusatMengundi')->orderBy('number')->get(), ]); } public function store(StoreRepresentativeRequest $request, AdminRepresentativeService $service): RedirectResponse { $service->store($request->user(), $request->validated()); return redirect()->route('admin.management.representatives.index') ->with('status', 'Wakil agensi telah disimpan.'); } public function destroy(DeleteRepresentativeRequest $request, string $type, int $id, AdminRepresentativeService $service): RedirectResponse { $service->delete($this->resolveRepresentative($type, $id), $request->user(), $request->validated('note')); return redirect()->route('admin.management.representatives.index') ->with('status', 'Wakil agensi telah dipadam.'); } private function resolveRepresentative(string $type, int $id): Model { return match ($type) { 'police' => PoliceEscort::query()->findOrFail($id), 'kkm' => KkmRepresentative::query()->findOrFail($id), 'jkm' => JkmRepresentative::query()->findOrFail($id), default => abort(404), }; } }