diff --git a/app/Http/Controllers/Store/WishlistController.php b/app/Http/Controllers/Store/WishlistController.php index 359e1fe6..72000dc5 100644 --- a/app/Http/Controllers/Store/WishlistController.php +++ b/app/Http/Controllers/Store/WishlistController.php @@ -3,7 +3,6 @@ namespace App\Http\Controllers\Store; use App\Http\Controllers\Controller; -use App\Models\Product; use App\Models\Wishlist; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -12,9 +11,9 @@ class WishlistController extends Controller { public function index() { - $user = Auth::user(); + $customer = Auth::guard('customer')->user(); - $products = $user->wishlistProducts() + $products = $customer->wishlistProducts() ->with(['translation', 'thumbnail', 'primaryVariant', 'reviews']) ->withCount('reviews') ->orderBy('wishlists.created_at', 'desc') @@ -23,21 +22,22 @@ public function index() return view('wishlist.index', compact('products')); } - public function store(Request $request) + public function toggle(Request $request) { $request->validate([ 'product_id' => 'required|exists:products,id', ]); - $customer = auth('customer')->user(); + $customer = Auth::guard('customer')->user(); - // Check if product already in wishlist - $exists = Wishlist::where('customer_id', $customer->id) + $wishlist = Wishlist::where('customer_id', $customer->id) ->where('product_id', $request->product_id) - ->exists(); + ->first(); - if ($exists) { - return response()->json(['message' => 'Already in wishlist'], 200); + if ($wishlist) { + $wishlist->delete(); + + return response()->json(['status' => 'removed', 'message' => 'Removed from favorites']); } Wishlist::create([ @@ -45,6 +45,6 @@ public function store(Request $request) 'product_id' => $request->product_id, ]); - return response()->json(['message' => 'Added to wishlist'], 200); + return response()->json(['status' => 'added', 'message' => 'Added to favorites']); } } diff --git a/app/Models/Customer.php b/app/Models/Customer.php index af86597a..b8366c84 100644 --- a/app/Models/Customer.php +++ b/app/Models/Customer.php @@ -36,7 +36,8 @@ public function wishlists() public function wishlistProducts() { - return $this->belongsToMany(Product::class, 'wishlists'); + return $this->belongsToMany(Product::class, 'wishlists', 'customer_id', 'product_id') + ->withTimestamps(); } public function reviews() diff --git a/resources/views/themes/xylo/product-detail.blade.php b/resources/views/themes/xylo/product-detail.blade.php index a17ade6b..19bc1c73 100644 --- a/resources/views/themes/xylo/product-detail.blade.php +++ b/resources/views/themes/xylo/product-detail.blade.php @@ -53,7 +53,28 @@ @endfor ({{ $product->reviews_count }} {{ __('store.product_detail.customer_reviews') }}) -
{{ $product->translation->short_description }}
@@ -206,6 +227,42 @@ class="{{ strtolower($values->first()->attribute->name) === 'color' ? 'color-cir @endsection @section('js') + +