109 lines
4.1 KiB
PHP
109 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api\V2;
|
|
|
|
use App\Http\Resources\V2\WishlistCollection;
|
|
use App\Models\Wishlist;
|
|
use App\Models\Product;
|
|
use Illuminate\Http\Request;
|
|
|
|
class WishlistController extends Controller
|
|
{
|
|
|
|
public function index()
|
|
{
|
|
$product_ids = Wishlist::where('user_id', auth()->user()->id)->pluck("product_id")->toArray();
|
|
$existing_product_ids = Product::whereIn('id', $product_ids)->pluck("id")->toArray();
|
|
|
|
$query = Wishlist::query();
|
|
$query->where('user_id', auth()->user()->id)->whereIn("product_id", $existing_product_ids);
|
|
|
|
return new WishlistCollection($query->latest()->get());
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
Wishlist::updateOrCreate(
|
|
['user_id' => $request->user_id, 'product_id' => $request->product_id]
|
|
);
|
|
return response()->json(['message' => translate('Product is successfully added to your wishlist')], 201);
|
|
}
|
|
|
|
public function destroy($id)
|
|
{
|
|
try {
|
|
Wishlist::destroy($id);
|
|
return response()->json(['result' => true, 'message' => translate('Product is successfully removed from your wishlist')], 200);
|
|
} catch (\Exception $e) {
|
|
return response()->json(['result' => false, 'message' => $e->getMessage()], 200);
|
|
}
|
|
|
|
}
|
|
|
|
public function add(Request $request)
|
|
{
|
|
$product = Wishlist::where(['product_id' => $request->product_id, 'user_id' => auth()->user()->id])->count();
|
|
if ($product > 0) {
|
|
return response()->json([
|
|
'message' => translate('Product present in wishlist'),
|
|
'is_in_wishlist' => true,
|
|
'product_id' => (integer)$request->product_id,
|
|
'wishlist_id' => (integer)Wishlist::where(['product_id' => $request->product_id, 'user_id' => auth()->user()->id])->first()->id
|
|
], 200);
|
|
} else {
|
|
Wishlist::create(
|
|
['user_id' =>auth()->user()->id, 'product_id' => $request->product_id]
|
|
);
|
|
|
|
return response()->json([
|
|
'message' => translate('Product added to wishlist'),
|
|
'is_in_wishlist' => true,
|
|
'product_id' => (integer)$request->product_id,
|
|
'wishlist_id' => (integer)Wishlist::where(['product_id' => $request->product_id, 'user_id' => auth()->user()->id])->first()->id
|
|
], 200);
|
|
}
|
|
|
|
}
|
|
|
|
public function remove(Request $request)
|
|
{
|
|
$product = Wishlist::where(['product_id' => $request->product_id, 'user_id' => auth()->user()->id])->count();
|
|
if ($product == 0) {
|
|
return response()->json([
|
|
'message' => translate('Product in not in wishlist'),
|
|
'is_in_wishlist' => false,
|
|
'product_id' => (integer)$request->product_id,
|
|
'wishlist_id' => 0
|
|
], 200);
|
|
} else {
|
|
Wishlist::where(['product_id' => $request->product_id, 'user_id' => auth()->user()->id])->delete();
|
|
|
|
return response()->json([
|
|
'message' => translate('Product is removed from wishlist'),
|
|
'is_in_wishlist' => false,
|
|
'product_id' => (integer)$request->product_id,
|
|
'wishlist_id' => 0
|
|
], 200);
|
|
}
|
|
}
|
|
|
|
public function isProductInWishlist(Request $request)
|
|
{
|
|
$product = Wishlist::where(['product_id' => $request->product_id, 'user_id' => auth()->user()->id])->count();
|
|
if ($product > 0)
|
|
return response()->json([
|
|
'message' => translate('Product present in wishlist'),
|
|
'is_in_wishlist' => true,
|
|
'product_id' => (integer)$request->product_id,
|
|
'wishlist_id' => (integer)Wishlist::where(['product_id' => $request->product_id, 'user_id' => auth()->user()->id])->first()->id
|
|
], 200);
|
|
|
|
return response()->json([
|
|
'message' => translate('Product is not present in wishlist'),
|
|
'is_in_wishlist' => false,
|
|
'product_id' => (integer)$request->product_id,
|
|
'wishlist_id' => 0
|
|
], 200);
|
|
}
|
|
}
|