filters['startDate'] ?? null; $endDate = $this->filters['endDate'] ?? null; $data = Visitor::query() ->select( DB::raw('SUM(counter) as total'), DB::raw("DATE_FORMAT(date, '%Y-%m-%d') as day") ) ->when($startDate, fn ($q) => $q->whereDate('date', '>=', $startDate)) ->when(! $startDate, fn ($q) => $q->where('date', '>=', now()->subDays(30))) ->when($endDate, fn ($q) => $q->whereDate('date', '<=', $endDate)) ->groupBy('day') ->orderBy('day') ->get(); return [ 'datasets' => [ [ 'label' => 'Total Kunjungan', 'data' => $data->pluck('total')->toArray(), 'fill' => 'start', 'borderColor' => '#3B82F6', 'backgroundColor' => 'rgba(59, 130, 246, 0.1)', ], ], 'labels' => $data->pluck('day')->map(fn ($d) => Carbon::parse($d)->translatedFormat('d M'))->toArray(), ]; } protected function getType(): string { return 'line'; } }