authorize('view', $website); [$from, $to] = $this->parseDateRange($request); [$prevFrom, $prevTo] = $this->previousPeriod($from, $to); $service = AnalyticsQueryService::for($website, $from, $to); $prevService = AnalyticsQueryService::for($website, $prevFrom, $prevTo); $metrics = $service->summary(); $prevMetrics = $prevService->summary(); $chartData = $service->visitorsOverTime(); $activeVisitors = AnalyticsQueryService::activeVisitors($website); $goalConversions = $service->conversionsReport(); $goalChartData = $service->goalCompletionsOverTime(); $topPages = $service->topPages(5); $topSources = $service->trafficSources(5); return view('dashboard.show', compact( 'website', 'metrics', 'prevMetrics', 'chartData', 'activeVisitors', 'goalConversions', 'goalChartData', 'from', 'to', 'topPages', 'topSources', )); } public function realtime(Website $website): JsonResponse { $this->authorize('view', $website); return response()->json([ 'active' => AnalyticsQueryService::activeVisitors($website), ]); } }