whereBetween('created_at', [now()->startOfMonth(), now()->endOfMonth()]) ->selectRaw('DATE(created_at) as date, COUNT(*) as aggregate') ->groupBy(DB::raw('DATE(created_at)')) ->orderBy('date') ->pluck('aggregate', 'date') ->toArray(); } #[\Override] protected function getData(): array { $pendingData = $this->getTrendData(UserOrder::pending()); $cancelledData = $this->getTrendData(UserOrder::cancelled()); $completedData = $this->getTrendData(UserOrder::completed()); $allDates = collect(array_keys(array_merge($pendingData, $cancelledData, $completedData))) ->unique() ->sort() ->values(); $datasets = [ $this->getDataset($pendingData, $allDates, __('filament::resources.stats.orders_chart.pending'), '#fbbf24', '#f59e0b'), $this->getDataset($cancelledData, $allDates, __('filament::resources.stats.orders_chart.cancelled'), '#dc2626', '#b91c1c'), $this->getDataset($completedData, $allDates, __('filament::resources.stats.orders_chart.completed'), '#10b981', '#059669'), ]; return [ 'datasets' => $datasets, 'labels' => $allDates, ]; } private function getDataset(array $data, $allDates, string $label, string $backgroundColor, string $borderColor): array { return [ 'label' => $label, 'data' => $allDates->map(fn ($date) => $data[$date] ?? 0), 'backgroundColor' => $backgroundColor, 'borderColor' => $borderColor, ]; } protected function getType(): string { return 'bar'; } }