badgePdfService->generate( userIds: $request->input('user_ids', []), schoolYear: $request->input('school_year'), rolesMap: $request->input('roles', []), classesMap: $request->input('classes', []), actorId: optional($request->user())->id ); } public function printStatus(BadgePrintStatusRequest $request): JsonResponse { try { return response()->json([ 'ok' => true, 'data' => $this->badgePrintLogService->getStatus( $request->normalizedUserIds(), $request->input('school_year') ), ]); } catch (Throwable) { return response()->json([ 'ok' => false, 'error' => 'Failed to query status', ], 500); } } public function logPrint(LogBadgePrintRequest $request): JsonResponse { try { $inserted = $this->badgePrintLogService->log( userIds: $request->input('user_ids', []), actorId: optional($request->user())->id, schoolYear: $request->input('school_year'), rolesMap: $request->input('roles', []), classesMap: $request->input('classes', []) ); return response()->json([ 'ok' => true, 'inserted' => $inserted, ]); } catch (Throwable $e) { return response()->json([ 'ok' => false, 'error' => $e->getMessage(), ], 500); } } public function formData(BadgePrintStatusRequest $request): JsonResponse { return response()->json([ 'ok' => true, 'data' => $this->badgeFormDataService->build( schoolYear: $request->input('school_year'), selectedUserIds: $request->normalizedUserIds(), activeRole: $request->input('active_role') ), ]); } }