startOfMonth()->subMonths(11); $months = collect(range(0, 11))->map(fn (int $offset) => $start->copy()->addMonths($offset)); $records = PurchaseHistory::query() ->where('purchased_at', '>=', $start) ->get(['purchased_at', 'price']); $grouped = $records->groupBy(fn (PurchaseHistory $history) => $history->purchased_at?->format('Y-m')); $labels = []; $values = []; foreach ($months as $month) { $key = $month->format('Y-m'); $labels[] = $month->translatedFormat('M Y'); $total = $grouped->get($key, collect())->sum(fn (PurchaseHistory $history) => (float) $history->price); $values[] = round($total, 2); } return [ 'datasets' => [ [ 'label' => __('admin.widgets.revenue_trend.series'), 'data' => $values, 'borderColor' => '#ec4899', 'backgroundColor' => 'rgba(236, 72, 153, 0.2)', 'tension' => 0.4, 'fill' => 'origin', ], ], 'labels' => $labels, ]; } }