Initial commit
Some checks failed
Deploy / deploy (push) Has been cancelled

This commit is contained in:
ssww23
2026-03-10 00:55:37 +03:00
parent fc0f28d830
commit 93a655235a
155 changed files with 24768 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
<?php
namespace App\Http\Controllers\Shop;
use App\Http\Controllers\Controller;
use App\Models\Product;
class FavoriteController extends Controller
{
public function index()
{
$favoriteIds = $this->favoriteIds();
$position = array_flip($favoriteIds);
$products = Product::query()
->whereIn('id', $favoriteIds)
->where('is_active', true)
->with('category')
->get()
->sortBy(fn (Product $product) => $position[$product->id] ?? PHP_INT_MAX)
->values();
return view('shop.favorites', [
'products' => $products,
]);
}
public function toggle(Product $product)
{
$favorites = $this->favoriteIds();
$exists = in_array($product->id, $favorites, true);
if ($exists) {
$favorites = array_values(array_filter($favorites, fn (int $id) => $id !== $product->id));
session()->put('favorites', $favorites);
return back()->with('status', "Товар \"{$product->name}\" удален из избранного.");
}
$favorites[] = $product->id;
session()->put('favorites', array_values(array_unique($favorites)));
return back()->with('status', "Товар \"{$product->name}\" добавлен в избранное.");
}
private function favoriteIds(): array
{
return array_values(array_map('intval', (array) session()->get('favorites', [])));
}
}