validate([ 'from' => ['nullable', 'date'], 'to' => ['nullable', 'date', 'after_or_equal:from'], ]); $range = isset($validated['from'], $validated['to']) ? new DateRange( Carbon::parse($validated['from'])->startOfDay(), Carbon::parse($validated['to'])->endOfDay(), ) : DateRange::preset('today'); try { return $this->sendResponse([ 'article_stats' => $this->dashboardStatsService->getStats($range), 'system_stats' => $this->dashboardStatsService->getSystemStats(), 'range' => [ 'from' => $range->from->toDateString(), 'to' => $range->to->toDateString(), ], ]); } catch (\Exception $e) { return $this->sendError('Failed to fetch dashboard stats: '.$e->getMessage(), [], 500); } } }