user(); $queryStartDate = $request->query('startAt'); $queryEndDate = $request->query('endAt'); $dateRange = $this->dateService->getDateRangeFromRequest($request, $user); $isRangeOneDay = $this->dateService->isRangeOneDay($dateRange->startDate, $dateRange->endDate); // Генерируем ключ кэша на основе параметров запроса // $cacheKey = $this->generateCacheKey($user, $startDate, $endDate, $isRangeOneDay); // Получаем данные из кэша или вычисляем $finalData = $this->statisticsService->getStatisticsData($user, $dateRange->startDate, $dateRange->endDate, $isRangeOneDay); $isHeadOrAdmin = $user->isSeniorStaff(); // $date = $isHeadOrAdmin ? [ // $this->dateService->parseDate($isRangeOneDay ? $dateRange->endDate : $dateRange->startDate)->getTimestampMs(), // $this->dateService->parseDate($dateRange->endDate)->getTimestampMs(), // ] : $this->dateService->parseDate($dateRange->endDate)->getTimestampMs(); return Inertia::render('Statistic/Index', [ 'data' => $finalData['data'], 'totalsByType' => $finalData['totalsByType'], 'grandTotals' => $finalData['grandTotals'], 'isHeadOrAdmin' => $isHeadOrAdmin, 'date' => [ $dateRange->startDate->getTimestampMs(), $dateRange->endDate->getTimestampMs(), ], 'isOneDay' => $isRangeOneDay, 'recipientPlanOfYear' => $finalData['recipientPlanOfYear'], ]); } public function report(Request $request) { $user = $request->user(); $queryStartDate = $request->query('startAt'); $queryEndDate = $request->query('endAt'); [$startDate, $endDate] = $this->dateService->getStatisticsDateRange($user, $queryStartDate, $queryEndDate); $isRangeOneDay = $this->dateService->isRangeOneDay($startDate, $endDate); $finalData = $this->statisticsService->getStatisticsData($user, $startDate, $endDate, $isRangeOneDay); return Excel::download(new StatisticsExport($finalData['data'], [$startDate, $endDate]), 'statistics.xlsx'); } }