You've already forked Atomcms-edit
Initial commit
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Community;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\RareSearchFormRequest;
|
||||
use App\Models\Community\RareValue\WebsiteRareValue;
|
||||
use App\Models\Community\RareValue\WebsiteRareValueCategory;
|
||||
use App\Models\Game\Furniture\Item;
|
||||
use App\Services\Community\RareValues\RareValueCategoriesService;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\View\View;
|
||||
|
||||
class WebsiteRareValuesController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private readonly RareValueCategoriesService $valueCategoriesService,
|
||||
) {}
|
||||
|
||||
public function index(): View
|
||||
{
|
||||
return view('rare-values', [
|
||||
'categories' => $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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user