diff --git a/packages/Webkul/API/Http/Controllers/Shop/CartController.php b/packages/Webkul/API/Http/Controllers/Shop/CartController.php index c06644456..553b29fc7 100644 --- a/packages/Webkul/API/Http/Controllers/Shop/CartController.php +++ b/packages/Webkul/API/Http/Controllers/Shop/CartController.php @@ -2,7 +2,10 @@ namespace Webkul\API\Http\Controllers\Shop; +use Exception; +use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Event; +use Illuminate\Support\Facades\Log; use Webkul\Checkout\Repositories\CartRepository; use Webkul\Checkout\Repositories\CartItemRepository; use Webkul\API\Http\Resources\Checkout\Cart as CartResource; @@ -42,9 +45,9 @@ class CartController extends Controller /** * Controller instance * - * @param \Webkul\Checkout\Repositories\CartRepository $cartRepository - * @param \Webkul\Checkout\Repositories\CartItemRepository $cartItemRepository - * @param \Webkul\Checkout\Repositories\WishlistRepository $wishlistRepository + * @param \Webkul\Checkout\Repositories\CartRepository $cartRepository + * @param \Webkul\Checkout\Repositories\CartItemRepository $cartItemRepository + * @param \Webkul\Checkout\Repositories\WishlistRepository $wishlistRepository */ public function __construct( CartRepository $cartRepository, @@ -69,7 +72,7 @@ class CartController extends Controller /** * Get customer cart * - * @return \Illuminate\Http\Response + * @return JsonResponse */ public function get() { @@ -86,10 +89,11 @@ class CartController extends Controller /** * Store a newly created resource in storage. * - * @param int $id - * @return \Illuminate\Http\Response + * @param int $id + * + * @return \Illuminate\Http\JsonResponse */ - public function store($id) + public function store($id): ?JsonResponse { if (request()->get('is_buy_now')) { Event::dispatch('shop.item.buy-now', $id); @@ -97,36 +101,46 @@ class CartController extends Controller Event::dispatch('checkout.cart.item.add.before', $id); - $result = Cart::addProduct($id, request()->except('_token')); + try { + $result = Cart::addProduct($id, request()->except('_token')); - if (! $result) { - $message = session()->get('warning') ?? session()->get('error'); + if (is_array($result) && isset($result['warning'])) { + return response()->json([ + 'error' => $result['warning'], + ], 400); + } + + if ($customer = auth($this->guard)->user()) { + $this->wishlistRepository->deleteWhere(['product_id' => $id, 'customer_id' => $customer->id]); + } + + Event::dispatch('checkout.cart.item.add.after', $result); + + Cart::collectTotals(); + + $cart = Cart::getCart(); return response()->json([ - 'error' => session()->get('warning'), - ], 400); + 'message' => __('shop::app.checkout.cart.item.success'), + 'data' => $cart ? new CartResource($cart) : null, + ]); + } catch (Exception $e) { + Log::error('API CartController: ' . $e->getMessage(), + ['productID' => $id, 'cartID' => cart()->getCart() ?? 0]); + + return response()->json([ + 'error' => [ + 'message' => $e->getMessage(), + 'code' => $e->getCode() + ] + ]); } - - if ($customer = auth($this->guard)->user()) { - $this->wishlistRepository->deleteWhere(['product_id' => $id, 'customer_id' => $customer->id]); - } - - Event::dispatch('checkout.cart.item.add.after', $result); - - Cart::collectTotals(); - - $cart = Cart::getCart(); - - return response()->json([ - 'message' => __('shop::app.checkout.cart.item.success'), - 'data' => $cart ? new CartResource($cart) : null, - ]); } /** * Update the specified resource in storage. * - * @return \Illuminate\Http\Response + * @return JsonResponse */ public function update() { @@ -161,7 +175,7 @@ class CartController extends Controller /** * Remove the specified resource from storage. * - * @return \Illuminate\Http\Response + * @return JsonResponse */ public function destroy() { @@ -182,8 +196,9 @@ class CartController extends Controller /** * Remove the specified resource from storage. * - * @param int $id - * @return \Illuminate\Http\Response + * @param int $id + * + * @return JsonResponse */ public function destroyItem($id) { @@ -206,7 +221,9 @@ class CartController extends Controller /** * Function to move a already added product to wishlist will run only on customer authentication. * - * @param \Webkul\Checkout\Repositories\CartItemRepository $id + * @param \Webkul\Checkout\Repositories\CartItemRepository $id + * + * @return JsonResponse */ public function moveToWishlist($id) { diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index 289585412..8052f6425 100755 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -151,7 +151,6 @@ class Cart session()->forget('cart'); } - Log::error($cartProducts, ['product' => $product, 'cartData' => $data]); throw new Exception($cartProducts); } else { $parentCartItem = null; diff --git a/packages/Webkul/Shop/src/Http/Controllers/CartController.php b/packages/Webkul/Shop/src/Http/Controllers/CartController.php index 74b3253b9..6dc2a8d48 100755 --- a/packages/Webkul/Shop/src/Http/Controllers/CartController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/CartController.php @@ -2,6 +2,7 @@ namespace Webkul\Shop\Http\Controllers; +use Illuminate\Support\Facades\Log; use Webkul\Customer\Repositories\WishlistRepository; use Webkul\Product\Repositories\ProductRepository; use Webkul\Checkout\Contracts\Cart as CartModel; @@ -75,7 +76,7 @@ class CartController extends Controller } if ($result instanceof CartModel) { - session()->flash('success', trans('shop::app.checkout.cart.item.success')); + session()->flash('success', __('shop::app.checkout.cart.item.success')); if ($customer = auth()->guard('customer')->user()) { $this->wishlistRepository->deleteWhere(['product_id' => $id, 'customer_id' => $customer->id]); @@ -88,10 +89,12 @@ class CartController extends Controller } } } catch(\Exception $e) { - session()->flash('error', trans($e->getMessage())); + session()->flash('error', __($e->getMessage())); $product = $this->productRepository->find($id); + Log::error('Shop CartController: ' . $e->getMessage(), ['productID' => $id, 'cartID' => cart()->getCart() ?? 0]); + return redirect()->route('shop.productOrCategory.index', $product->url_key); } diff --git a/packages/Webkul/Velocity/src/Http/Controllers/Shop/CartController.php b/packages/Webkul/Velocity/src/Http/Controllers/Shop/CartController.php index eafefe287..473ba897d 100644 --- a/packages/Webkul/Velocity/src/Http/Controllers/Shop/CartController.php +++ b/packages/Webkul/Velocity/src/Http/Controllers/Shop/CartController.php @@ -3,6 +3,7 @@ namespace Webkul\Velocity\Http\Controllers\Shop; use Cart; +use Illuminate\Support\Facades\Log; use Webkul\Velocity\Helpers\Helper; use Webkul\Checkout\Contracts\Cart as CartModel; use Webkul\Product\Repositories\ProductRepository; @@ -93,16 +94,18 @@ class CartController extends Controller } catch(\Exception $exception) { $product = $this->productRepository->find($id); + Log::error('Velocity CartController: ' . $exception->getMessage(), ['productID' => $id, 'cartID' => cart()->getCart() ?? 0]); + $response = [ 'status' => 'danger', - 'message' => trans($exception->getMessage()), + 'message' => __($exception->getMessage()), 'redirectionRoute' => route('shop.productOrCategory.index', $product->url_key), ]; } return $response ?? [ 'status' => 'danger', - 'message' => trans('velocity::app.error.something_went_wrong'), + 'message' => __('velocity::app.error.something_went_wrong'), ]; }