view->getEnvironment()->getGlobals()['pdo'] ?? null; if (!$pdo) { return $this->view->render($response, 'dashboard/index.twig', [ 'title' => 'Dashboard', 'stats' => [ 'total_media' => 0, 'total_games' => 0, 'total_movies' => 0, 'total_tv_shows' => 0, 'total_episodes' => 0, 'total_music' => 0, ], 'error' => 'Database connection not available' ]); } // Get statistics from models $gameStats = Game::getStats($pdo); $movieStats = Movie::getStats($pdo); $tvShowStats = TvShow::getStats($pdo); $musicStats = MusicArtist::getStats($pdo); $syncStats = SyncLog::getStats($pdo); // Get recent activity $recentGames = Game::getRecent($pdo, 5); $recentMovies = Movie::getRecent($pdo, 5); $recentSyncs = SyncLog::getRecent($pdo, 5); // Calculate total media count $totalMedia = ($gameStats['total_games'] ?? 0) + ($movieStats['total_movies'] ?? 0) + ($tvShowStats['total_shows'] ?? 0) + ($musicStats['total_artists'] ?? 0); $stats = [ 'total_media' => $totalMedia, 'total_games' => $gameStats['total_games'] ?? 0, 'total_movies' => $movieStats['total_movies'] ?? 0, 'total_tv_shows' => $tvShowStats['total_shows'] ?? 0, 'total_episodes' => $tvShowStats['total_episodes'] ?? 0, 'total_music' => $musicStats['total_artists'] ?? 0, 'total_playtime' => $gameStats['total_playtime'] ?? 0, 'watched_movies' => $movieStats['watched_movies'] ?? 0, 'favorite_games' => $gameStats['favorite_games'] ?? 0, 'favorite_movies' => $movieStats['favorite_movies'] ?? 0, 'favorite_shows' => $tvShowStats['favorite_shows'] ?? 0, 'favorite_music' => $musicStats['favorite_artists'] ?? 0, ]; return $this->view->render($response, 'dashboard/index.twig', [ 'title' => 'Dashboard', 'stats' => $stats, 'recent_games' => $recentGames, 'recent_movies' => $recentMovies, 'recent_syncs' => $recentSyncs, 'sync_stats' => $syncStats ]); } }