assignedPusatIds($request->user()); $pusats = PusatMengundi::query() ->with(['election.settings']) ->whereIn('id', $pusatIds) ->orderBy('name') ->get(); return view('ppm.attendance.index', [ 'pusats' => $pusats, 'summaryService' => $summaryService, ]); } public function show(PusatMengundi $pusatMengundi, Request $request, PpmScopeService $scopeService, AttendanceSummaryService $summaryService): View { if (! $scopeService->assignedPusatIds($request->user())->contains((int) $pusatMengundi->id)) { abort(403); } $assignments = StaffAssignment::query() ->with(['application', 'user', 'position', 'saluranMengundi', 'attendance']) ->where('pusat_mengundi_id', $pusatMengundi->id) ->where('status', 'active') ->orderBy('position_id') ->orderBy('saluran_mengundi_id') ->get(); return view('ppm.attendance.show', [ 'pusat' => $pusatMengundi->load('election.settings'), 'assignments' => $assignments, 'summary' => $summaryService->totalsForPusat($pusatMengundi), ]); } public function store(PusatMengundi $pusatMengundi, RecordAttendanceRequest $request, AttendanceRecordingService $service): RedirectResponse { try { $service->recordBulk($pusatMengundi, $request->user(), $request->validated('attendance')); } catch (ValidationException $exception) { throw $exception; } return redirect()->route('ppm.attendance.show', $pusatMengundi) ->with('status', 'Kehadiran telah direkodkan.'); } }