findAll(); $allSessions = $sessionRepository->findAll(); $activeSessions = array_filter( $allSessions, fn(Session $s) => in_array($s->getStatus(), [SessionStatus::CREATED, SessionStatus::READY, SessionStatus::PLAYING]) ); return $this->render('game/admin/index.html.twig', [ 'totalUsers' => count($allUsers), 'totalPlayers' => count($userRepository->findByRole('ROLE_PLAYER')), 'totalAdmins' => count($userRepository->findByRole('ROLE_ADMIN')), 'totalGames' => count($gameRepository->findAll()), 'totalSessions' => count($allSessions), 'activeSessions' => count($activeSessions), ]); } #[Route('/session/{session}', name: 'game_admin_view_session', methods: ['GET'])] public function viewSession(Session $session, LobbyMessageRepository $lobbyMessageRepository): Response { $playersLogs = []; foreach ($session->getPlayers() as $player) { $logFile = $this->projectDir . '/var/log/sessions/' . $session->getId() . '/' . $player->getLogFileBasename() . '.txt'; $playersLogs[] = [ 'username' => $player->getUser()->getUsername(), 'logs' => file_exists($logFile) ? file_get_contents($logFile) : '', ]; } return $this->render('game/admin/sessions/view.html.twig', [ 'session' => $session, 'playersLogs' => $playersLogs, 'lobbyMessages' => $lobbyMessageRepository->findForSession($session), ]); } }