From 449a2e1d4744ba1b13bdf67427db49303aaadddd Mon Sep 17 00:00:00 2001 From: Annika Wolff Date: Tue, 9 Jun 2020 08:15:17 +0200 Subject: [PATCH 1/4] add logging to exception thrown in cart --- packages/Webkul/Checkout/src/Cart.php | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index 635764533..21059ae07 100755 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -2,6 +2,8 @@ namespace Webkul\Checkout; +use Exception; +use Illuminate\Support\Facades\Log; use Webkul\Checkout\Models\Cart as CartModel; use Webkul\Checkout\Models\CartAddress; use Webkul\Checkout\Repositories\CartRepository; @@ -122,9 +124,11 @@ class Cart /** * Add Items in a cart with some cart and item details. * - * @param int $productId - * @param array $data - * @return \Webkul\Checkout\Contracts\Cart|\Exception|array + * @param int $productId + * @param array $data + * + * @return \Webkul\Checkout\Contracts\Cart|string|array + * @throws Exception */ public function addProduct($productId, $data) { @@ -147,7 +151,8 @@ class Cart session()->forget('cart'); } - throw new \Exception($cartProducts); + Log::error($cartProducts, ['product' => $product, 'cartData' => $data]); + throw new Exception($cartProducts); } else { $parentCartItem = null; @@ -161,7 +166,7 @@ class Cart if (! $cartItem) { $cartItem = $this->cartItemRepository->create(array_merge($cartProduct, ['cart_id' => $cart->id])); } else { - if (isset($cartProduct['parent_id']) && $cartItem->parent_id != $parentCartItem->id) { + if (isset($cartProduct['parent_id']) && $cartItem->parent_id !== $parentCartItem->id) { $cartItem = $this->cartItemRepository->create(array_merge($cartProduct, [ 'cart_id' => $cart->id ])); @@ -232,7 +237,8 @@ class Cart * Update cart items information * * @param array $data - * @return bool|void|\Exception + * + * @return bool|void|Exception */ public function updateItems($data) { @@ -246,13 +252,13 @@ class Cart if ($quantity <= 0) { $this->removeItem($itemId); - throw new \Exception(trans('shop::app.checkout.cart.quantity.illegal')); + throw new Exception(trans('shop::app.checkout.cart.quantity.illegal')); } $item->quantity = $quantity; if (! $this->isItemHaveQuantity($item)) { - throw new \Exception(trans('shop::app.checkout.cart.quantity.inventory_warning')); + throw new Exception(trans('shop::app.checkout.cart.quantity.inventory_warning')); } Event::dispatch('checkout.cart.update.before', $item); @@ -499,7 +505,7 @@ class Cart $this->saveAddressesWhenRequested($data, $billingAddressData, $shippingAddressData); $this->linkAddresses($cart, $billingAddressData, $shippingAddressData); - + $this->assignCustomerFields($cart); $cart->save(); From a32925f6ce8934313dc45770847af4298df9571b Mon Sep 17 00:00:00 2001 From: Annika Wolff Date: Tue, 9 Jun 2020 08:35:22 +0200 Subject: [PATCH 2/4] refactor used translation function --- packages/Webkul/Checkout/src/Cart.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index 21059ae07..289585412 100755 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -223,7 +223,7 @@ class Cart $cart = $this->cartRepository->create($cartData); if (! $cart) { - session()->flash('error', trans('shop::app.checkout.cart.create-error')); + session()->flash('error', __('shop::app.checkout.cart.create-error')); return; } @@ -252,13 +252,13 @@ class Cart if ($quantity <= 0) { $this->removeItem($itemId); - throw new Exception(trans('shop::app.checkout.cart.quantity.illegal')); + throw new Exception(__('shop::app.checkout.cart.quantity.illegal')); } $item->quantity = $quantity; if (! $this->isItemHaveQuantity($item)) { - throw new Exception(trans('shop::app.checkout.cart.quantity.inventory_warning')); + throw new Exception(__('shop::app.checkout.cart.quantity.inventory_warning')); } Event::dispatch('checkout.cart.update.before', $item); From dbc16cf7e62d676939fe3ee134b3f1223afdfd4d Mon Sep 17 00:00:00 2001 From: Annika Wolff Date: Tue, 9 Jun 2020 10:14:06 +0200 Subject: [PATCH 3/4] add logging of catched exception --- .../Http/Controllers/Shop/CartController.php | 81 +++++++++++-------- packages/Webkul/Checkout/src/Cart.php | 1 - .../src/Http/Controllers/CartController.php | 7 +- .../Http/Controllers/Shop/CartController.php | 7 +- 4 files changed, 59 insertions(+), 37 deletions(-) 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'), ]; } From abbd5c4a31d18d3808066c70c1043d47bff99990 Mon Sep 17 00:00:00 2001 From: Annika Wolff Date: Tue, 9 Jun 2020 14:35:02 +0200 Subject: [PATCH 4/4] slightly refactoring --- .../API/Http/Controllers/Shop/CartController.php | 12 ++++++------ .../Shop/src/Http/Controllers/CartController.php | 3 ++- .../src/Http/Controllers/Shop/CartController.php | 3 ++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/Webkul/API/Http/Controllers/Shop/CartController.php b/packages/Webkul/API/Http/Controllers/Shop/CartController.php index 553b29fc7..dbecc7c01 100644 --- a/packages/Webkul/API/Http/Controllers/Shop/CartController.php +++ b/packages/Webkul/API/Http/Controllers/Shop/CartController.php @@ -72,7 +72,7 @@ class CartController extends Controller /** * Get customer cart * - * @return JsonResponse + * @return \Illuminate\Http\JsonResponse */ public function get() { @@ -126,7 +126,7 @@ class CartController extends Controller ]); } catch (Exception $e) { Log::error('API CartController: ' . $e->getMessage(), - ['productID' => $id, 'cartID' => cart()->getCart() ?? 0]); + ['product_id' => $id, 'cart_id' => cart()->getCart() ?? 0]); return response()->json([ 'error' => [ @@ -140,7 +140,7 @@ class CartController extends Controller /** * Update the specified resource in storage. * - * @return JsonResponse + * @return \Illuminate\Http\JsonResponse */ public function update() { @@ -175,7 +175,7 @@ class CartController extends Controller /** * Remove the specified resource from storage. * - * @return JsonResponse + * @return \Illuminate\Http\JsonResponse */ public function destroy() { @@ -198,7 +198,7 @@ class CartController extends Controller * * @param int $id * - * @return JsonResponse + * @return \Illuminate\Http\JsonResponse */ public function destroyItem($id) { @@ -223,7 +223,7 @@ class CartController extends Controller * * @param \Webkul\Checkout\Repositories\CartItemRepository $id * - * @return JsonResponse + * @return \Illuminate\Http\JsonResponse */ public function moveToWishlist($id) { diff --git a/packages/Webkul/Shop/src/Http/Controllers/CartController.php b/packages/Webkul/Shop/src/Http/Controllers/CartController.php index 6dc2a8d48..d0bcb4a29 100755 --- a/packages/Webkul/Shop/src/Http/Controllers/CartController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/CartController.php @@ -93,7 +93,8 @@ class CartController extends Controller $product = $this->productRepository->find($id); - Log::error('Shop CartController: ' . $e->getMessage(), ['productID' => $id, 'cartID' => cart()->getCart() ?? 0]); + Log::error('Shop CartController: ' . $e->getMessage(), + ['product_id' => $id, 'cart_id' => 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 473ba897d..67f0c9f26 100644 --- a/packages/Webkul/Velocity/src/Http/Controllers/Shop/CartController.php +++ b/packages/Webkul/Velocity/src/Http/Controllers/Shop/CartController.php @@ -94,7 +94,8 @@ class CartController extends Controller } catch(\Exception $exception) { $product = $this->productRepository->find($id); - Log::error('Velocity CartController: ' . $exception->getMessage(), ['productID' => $id, 'cartID' => cart()->getCart() ?? 0]); + Log::error('Velocity CartController: ' . $exception->getMessage(), + ['product_id' => $id, 'cart_id' => cart()->getCart() ?? 0]); $response = [ 'status' => 'danger',