user(); $wishlist = $request->has('folder') ? $customer->wishlist_items()->where('folder_id',$request->folder) :$customer->wishlist_items(); return response([ 'data' => WishListResource::collection($wishlist->paginate(10)), ]); } /** * Add or remote item from wishlist. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function addOrRemove(Request $request, $id) { $customer = $request->user(); $wishlistItem = $this->wishlistRepository->findOneWhere([ 'channel_id' => core()->getCurrentChannel()->id, 'product_id' => $id, 'customer_id' => $customer->id, ]); if ($wishlistItem) { $this->wishlistRepository->delete($wishlistItem->id); return response([ 'data' => null, 'message' => __('sarga-api::app.wishlist.success-remove'), ]); } $product = app(ProductFlatRepository::class)->findOneWhere(['product_id' => $id]); $wishlistItem = $this->wishlistRepository->create([ 'channel_id' => core()->getCurrentChannel()->id, 'product_id' => $id, 'customer_id' => $customer->id, 'price' => $product->min_price ?? $product->price, // 'folder_id' => $request->folder_id ]); return response([ 'data' => new WishListResource($wishlistItem), 'message' => __('sarga-api::app.wishlist.success-add'), ]); } /** * Move product from wishlist to cart. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function moveToCart(Request $request, $id) { $customer = $request->user(); $wishlistItem = $this->wishlistRepository->findOneWhere([ 'channel_id' => core()->getCurrentChannel()->id, 'product_id' => $id, 'customer_id' => $customer->id, ]); if ($wishlistItem->customer_id != $customer->user()->id) { return response([ 'message' => __('rest-api::app.common-response.error.security-warning'), ], 400); } $result = Cart::moveToCart($wishlistItem); if ($result) { Cart::collectTotals(); $cart = Cart::getCart(); return response([ 'data' => $cart ? new CartResource($cart) : null, 'message' => __('rest-api::app.wishlist.moved'), ]); } return response([ 'message' => __('rest-api::app.wishlist.option-missing'), ], 400); } public function moveToFolder(Request $request, $folder_id){ $customer = $request->user(); if($this->wishlistRepository->where('customer_id',$customer->id) ->whereIn('id',$request->wishlist) ->update(['folder_id' => $folder_id])){ // $folder = app(FolderRepository::class)->with('wishlist')->find($folder_id); return response([ // 'data' => FolderResource::make($folder), 'message' => __('sarga-api::app.wishlist.success-add'), ]); } return response([ // 'data' => FolderResource::make($folder), 'message' => __('sarga-api::app.wishlist.success-add'), ]); } public function folders(FolderRepository $folderRepository){ $customer = request()->user(); $folders = $folderRepository->where('customer_id', $customer->id) ->with(['wishlist'=> function($q){ $q->take(4); }]) ->withCount('wishlist') ->get(); return FolderResource::collection($folders); } public function getFolder($id) { if($wishlist = $this->wishlistRepository->findWhere([ 'channel_id' => core()->getCurrentChannel()->id, 'folder_id' => $id ])->paginate(10)){ return response([ 'data' => WishListResource::collection($wishlist), ]); } return response(['message' => 'Folder not found'],404); } public function createFolder(FolderRequest $request) { $folderRepo = app(FolderRepository::class); if($folder = $folderRepo->create(['name' => $request->name, 'customer_id' => $request->user()->id])){ return response([ 'message' => 'Successfully created folder', 'data'=>FolderResource::make($folder) ],200); } return response(['message' => 'Folder creation failed'],400); } public function deleteFolder(Request $request) { $folderRepo = app(FolderRepository::class); if($folderRepo->deleteWhere(['id' => $request->folder_id, 'customer_id' => $request->user()->id])){ return response(['message' => 'Folder deletion successful'],200); } return response(['message' => 'Folder deletion failed'],400); } public function updateFolder(Request $request,$id) { $folderRepo = app(FolderRepository::class); if($folder = $folderRepo->update($request->all(), $id)){ return FolderResource::make($folder); } return response(['message' => 'Folder update failed'],400); } }