user(); $queryStartDate = $request->query('startAt'); $queryEndDate = $request->query('endAt'); [$startDate, $endDate] = $this->dateService->getStatisticsDateRange($user, $queryStartDate, $queryEndDate); $isRangeOneDay = $this->dateService->isRangeOneDay($startDate, $endDate); // Генерируем ключ кэша на основе параметров запроса // $cacheKey = $this->generateCacheKey($user, $startDate, $endDate, $isRangeOneDay); // Получаем данные из кэша или вычисляем $finalData = $this->statisticsService->getStatisticsData($user, $startDate, $endDate, $isRangeOneDay); $isHeadOrAdmin = $user->isAdmin() || $user->isHeadOfDepartment(); $date = $isHeadOrAdmin ? [ $this->dateService->parseDate($isRangeOneDay ? $endDate : $startDate)->getTimestampMs(), $this->dateService->parseDate($endDate)->getTimestampMs() ] : $this->dateService->parseDate($endDate)->getTimestampMs(); return Inertia::render('Statistic/Index', [ 'data' => $finalData['data'], 'totalsByType' => $finalData['totalsByType'], 'grandTotals' => $finalData['grandTotals'], 'isHeadOrAdmin' => $isHeadOrAdmin, 'date' => $date, 'isOneDay' => $isRangeOneDay, ]); } }