view = App::getInstance()->getView(); $this->monitoringService = new MonitoringService(); $this->auditService = new AuditService(); } public function index(): void { $serverModel = new Server(); $userId = (int) Session::get('user_id'); $accessibleIds = $serverModel->getAccessibleServerIds($userId); $stats = $this->monitoringService->getDashboardStats($accessibleIds); $servers = !empty($accessibleIds) ? array_values(array_filter($serverModel->findAll(true), function ($s) use ($accessibleIds) { return in_array((int) $s['id'], $accessibleIds, true); })) : []; $aggregatedMetrics = $this->monitoringService->getAggregatedHistoricalMetrics($accessibleIds ?? []); $recentActivity = $this->auditService->getRecentActivity(10, $userId); $this->view->display('dashboard.index', [ 'title' => 'Dashboard - ServerManager', 'stats' => $stats, 'servers' => $servers, 'aggregatedMetrics' => $aggregatedMetrics, 'recentActivity' => $recentActivity, ]); } public function stats(): void { $serverModel = new Server(); $accessibleIds = $serverModel->getAccessibleServerIds((int) Session::get('user_id')); $stats = $this->monitoringService->getDashboardStats($accessibleIds); $this->view->json([ 'success' => true, 'data' => $stats, ]); } public function refreshMetrics(): void { $this->monitoringService->collectAllMetrics(); $this->view->json([ 'success' => true, 'message' => 'Metrics refreshed', ]); } public function chartData(): void { $serverModel = new Server(); $accessibleIds = $serverModel->getAccessibleServerIds((int) Session::get('user_id')); $data = $this->monitoringService->getAggregatedHistoricalMetrics($accessibleIds ?? []); $this->view->json([ 'success' => true, 'data' => $data, ]); } }