$q->whereNotNull('confirmed_at'); $days = collect(range(29, 0))->map(fn ($i) => now()->subDays($i)->format('Y-m-d')); $donations = Donation::whereHas('donationConfirmation', $confirmedScope) ->where('created_at', '>=', now()->subDays(30)->startOfDay()) ->selectRaw('DATE(created_at) as date, SUM(amount) / 100 as total') ->groupByRaw('DATE(created_at)') ->pluck('total', 'date'); return [ 'datasets' => [ [ 'label' => 'Revenue (£)', 'data' => $days->map(fn ($d) => round($donations[$d] ?? 0, 2))->toArray(), 'borderColor' => '#10b981', 'backgroundColor' => 'rgba(16, 185, 129, 0.1)', 'fill' => true, 'tension' => 0.3, ], ], 'labels' => $days->map(fn ($d) => Carbon::parse($d)->format('d M'))->toArray(), ]; } protected function getType(): string { return 'line'; } }