$this->valueCategoriesService->fetchCategoriesByPriority(), 'categoriesNav' => $this->valueCategoriesService->fetchAllCategories(), 'statistics' => $this->valueCategoriesService->getRareStatistics(), ]); } public function category(int $id, Request $request): View|RedirectResponse { $category = $this->valueCategoriesService->fetchCategoryById($id); if (! $category instanceof WebsiteRareValueCategory) { return redirect()->back()->withErrors([ 'message' => __('The entered category does not exist'), ]); } // Get sort parameters $sortBy = $request->get('sort', 'name'); $sortOrder = $request->get('order', 'asc'); // Validate sort parameters $allowedSorts = ['name', 'credit_value', 'currency_value', 'created_at']; $allowedOrders = ['asc', 'desc']; if (! in_array($sortBy, $allowedSorts)) { $sortBy = 'name'; } if (! in_array($sortOrder, $allowedOrders)) { $sortOrder = 'asc'; } return view('rare-values', [ 'category' => $category, 'categoriesNav' => $this->valueCategoriesService->fetchAllCategories(), 'statistics' => $this->valueCategoriesService->getRareStatistics(), 'sortBy' => $sortBy, 'sortOrder' => $sortOrder, ]); } public function search(RareSearchFormRequest $request): View|RedirectResponse { $searchTerm = $request->input('search'); $categories = $this->valueCategoriesService->searchCategories($searchTerm); if ($categories->isEmpty()) { return redirect()->back()->withErrors([ 'message' => __('It seems like there were no rares matching your search input'), ]); } return view('rare-values', [ 'categories' => $categories, 'categoriesNav' => $this->valueCategoriesService->fetchAllCategories(), 'statistics' => $this->valueCategoriesService->getRareStatistics(), 'searchTerm' => $searchTerm, ]); } public function value(WebsiteRareValue $value): View { $cacheKey = "rare_value_items_{$value->id}"; $items = Cache::remember($cacheKey, 300, fn () => Item::with(['user:id,username,look']) ->where('item_id', $value->item_id) ->get()); $itemsPerUser = $items->groupBy('user_id')->map(fn ($group) => [ 'user' => $group->first()->user, 'item_count' => $group->count(), ]); // Get total count $totalItems = $items->count(); return view('value', [ 'value' => $value, 'items' => $itemsPerUser, 'totalItems' => $totalItems, ]); } }