where('created_at', '>=', now()->subDays(7)) ->select( DB::raw('DATE(created_at) as date'), DB::raw('SUM(total) as revenue') ) ->groupBy('date') ->orderBy('date') ->get(); $labels = []; $revenues = []; // Fill in last 7 days for ($i = 6; $i >= 0; $i--) { $date = now()->subDays($i)->format('Y-m-d'); $dayName = now()->subDays($i)->format('D'); $labels[] = $dayName; $dayData = $data->firstWhere('date', $date); $revenues[] = $dayData ? $dayData->revenue : 0; } return [ 'datasets' => [ [ 'label' => 'Revenue (R)', 'data' => $revenues, 'backgroundColor' => 'rgba(59, 130, 246, 0.1)', 'borderColor' => 'rgb(59, 130, 246)', 'fill' => true, ], ], 'labels' => $labels, ]; } protected function getType(): string { return 'line'; } protected function getOptions(): array { return [ 'scales' => [ 'y' => [ 'beginAtZero' => true, ], ], ]; } }