From dee596a3a742c02c59c0b39b2d0e4bc0cb59c40e Mon Sep 17 00:00:00 2001 From: amit kumar laravel Date: Mon, 26 Jun 2023 18:04:55 +0530 Subject: [PATCH 1/2] Moved coupon on cart in API --- .../src/Repositories/CartItemRepository.php | 7 +- .../Http/Controllers/API/CartController.php | 54 +++++++++++ .../src/Http/Controllers/CartController.php | 65 +------------ .../Customer/Account/OrderController.php | 4 +- .../src/Http/Resources/ProductResource.php | 2 +- .../Webkul/Shop/src/Resources/lang/en/app.php | 18 ++-- .../views/checkout/cart/coupon.blade.php | 4 +- .../views/checkout/cart/index.blade.php | 92 ++++++++++++------- .../views/checkout/onepage/coupon.blade.php | 4 +- .../views/components/modal/index.blade.php | 1 + packages/Webkul/Shop/src/Routes/api.php | 19 ++-- .../Shop/src/Routes/checkout-routes.php | 4 - 12 files changed, 142 insertions(+), 132 deletions(-) diff --git a/packages/Webkul/Checkout/src/Repositories/CartItemRepository.php b/packages/Webkul/Checkout/src/Repositories/CartItemRepository.php index 87d13fb35ba..95e0a84a16c 100755 --- a/packages/Webkul/Checkout/src/Repositories/CartItemRepository.php +++ b/packages/Webkul/Checkout/src/Repositories/CartItemRepository.php @@ -3,16 +3,13 @@ namespace Webkul\Checkout\Repositories; use Webkul\Core\Eloquent\Repository; -use Webkul\Checkout\Contracts\CartItem; class CartItemRepository extends Repository { /** * Specify Model class name - * - * @return string */ - function model(): string + public function model(): string { return 'Webkul\Checkout\Contracts\CartItem'; } @@ -25,4 +22,4 @@ public function getProduct($cartItemId) { return $this->model->find($cartItemId)->product->id; } -} \ No newline at end of file +} diff --git a/packages/Webkul/Shop/src/Http/Controllers/API/CartController.php b/packages/Webkul/Shop/src/Http/Controllers/API/CartController.php index 6d322fdbceb..a48d41c02e6 100755 --- a/packages/Webkul/Shop/src/Http/Controllers/API/CartController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/API/CartController.php @@ -110,4 +110,58 @@ public function update(): JsonResource ]); } } + + /** + * Apply coupon to the cart. + */ + public function storeCoupon(): JsonResource + { + $couponCode = request()->input('code'); + try { + if (strlen($couponCode)) { + $coupon = $this->cartRuleCouponRepository->findOneByField('code', $couponCode); + + if ($coupon->cart_rule->status) { + if (Cart::getCart()->coupon_code == $couponCode) { + return new JsonResource([ + 'data' => new CartResource(Cart::getCart()), + 'message' => trans('shop::app.checkout.cart.coupon-already-applied'), + ]); + } + + Cart::setCouponCode($couponCode)->collectTotals(); + + if (Cart::getCart()->coupon_code == $couponCode) { + return new JsonResource([ + 'data' => new CartResource(Cart::getCart()), + 'message' => trans('shop::app.checkout.cart.coupon.success-apply'), + ]); + } + } + } + + return new JsonResource([ + 'data' => new CartResource(Cart::getCart()), + 'message' => trans('shop::app.checkout.cart.not-found'), + ]); + } catch (\Exception $e) { + return new JsonResource([ + 'data' => new CartResource(Cart::getCart()), + 'message' => trans('shop::app.checkout.cart.coupon.error'), + ]); + } + } + + /** + * Remove applied coupon from the cart. + */ + public function destroyCoupon(): JsonResource + { + Cart::removeCouponCode()->collectTotals(); + + return new JsonResource([ + 'data' => new CartResource(Cart::getCart()), + 'message' => trans('shop::app.checkout.cart.coupon.remove'), + ]); + } } diff --git a/packages/Webkul/Shop/src/Http/Controllers/CartController.php b/packages/Webkul/Shop/src/Http/Controllers/CartController.php index 7af291a5715..f68cd76d95b 100755 --- a/packages/Webkul/Shop/src/Http/Controllers/CartController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/CartController.php @@ -2,27 +2,16 @@ namespace Webkul\Shop\Http\Controllers; -use Illuminate\Http\Resources\Json\JsonResource; -use Webkul\Checkout\Facades\Cart; -use Webkul\CartRule\Repositories\CartRuleCouponRepository; -use Webkul\Product\Repositories\ProductRepository; -use Webkul\Customer\Repositories\WishlistRepository; - class CartController extends Controller { /** * Create a new controller instance. * - * @param \Webkul\CartRule\Repositories\CartRuleCouponRepository $cartRuleCouponRepository - * @param \Webkul\Product\Repositories\ProductRepository $productRepository - * @param \Webkul\Customer\Repositories\WishlistRepository $wishlistRepository * @return void */ public function __construct( - protected CartRuleCouponRepository $cartRuleCouponRepository, - protected ProductRepository $productRepository, - protected WishlistRepository $wishlistRepository, - ) {} + ) { + } /** * Cart page. @@ -33,54 +22,4 @@ public function index() { return view('shop::checkout.cart.index'); } - - /** - * Apply coupon to the cart. - */ - public function storeCoupon(): JsonResource - { - $couponCode = request()->input('code'); - - try { - if (strlen($couponCode)) { - $coupon = $this->cartRuleCouponRepository->findOneByField('code', $couponCode); - - if ($coupon->cart_rule->status) { - if (Cart::getCart()->coupon_code == $couponCode) { - return new JsonResource([ - 'message' => trans('shop::app.checkout.cart.coupon-already-applied'), - ]); - } - - Cart::setCouponCode($couponCode)->collectTotals(); - - if (Cart::getCart()->coupon_code == $couponCode) { - return new JsonResource([ - 'message' => trans('shop::app.checkout.cart.coupon.success-apply'), - ]); - } - } - } - - return new JsonResource([ - 'message' => trans('shop::app.checkout.cart.coupon-already-applied'), - ]); - } catch (\Exception $e) { - return new JsonResource([ - 'message' => trans('shop::app.checkout.cart.coupon.success-apply'), - ]); - } - } - - /** - * Remove applied coupon from the cart. - */ - public function destroyCoupon(): JsonResource - { - Cart::removeCouponCode()->collectTotals(); - - return new JsonResource([ - 'message' => trans('shop::app.checkout.cart.coupon.remove'), - ]); - } } diff --git a/packages/Webkul/Shop/src/Http/Controllers/Customer/Account/OrderController.php b/packages/Webkul/Shop/src/Http/Controllers/Customer/Account/OrderController.php index f7732b70972..620668f8d89 100644 --- a/packages/Webkul/Shop/src/Http/Controllers/Customer/Account/OrderController.php +++ b/packages/Webkul/Shop/src/Http/Controllers/Customer/Account/OrderController.php @@ -3,9 +3,9 @@ namespace Webkul\Shop\Http\Controllers\Customer\Account; use Webkul\Core\Traits\PDFHandler; -use Webkul\Shop\Http\Controllers\Controller; use Webkul\Sales\Repositories\InvoiceRepository; use Webkul\Sales\Repositories\OrderRepository; +use Webkul\Shop\Http\Controllers\Controller; class OrderController extends Controller { @@ -14,8 +14,6 @@ class OrderController extends Controller /** * Create a new controller instance. * - * @param \Webkul\Sales\Repositories\OrderRepository $orderRepository - * @param \Webkul\Sales\Repositories\InvoiceRepository $invoiceRepository * @return void */ public function __construct( diff --git a/packages/Webkul/Shop/src/Http/Resources/ProductResource.php b/packages/Webkul/Shop/src/Http/Resources/ProductResource.php index 4c03b032459..7429fc93853 100644 --- a/packages/Webkul/Shop/src/Http/Resources/ProductResource.php +++ b/packages/Webkul/Shop/src/Http/Resources/ProductResource.php @@ -17,7 +17,7 @@ public function toArray($request) $productTypeInstance = $this->getTypeInstance(); $reviewHelper = app('Webkul\Product\Helpers\Review'); - + return [ 'id' => $this->id, 'name' => $this->name, diff --git a/packages/Webkul/Shop/src/Resources/lang/en/app.php b/packages/Webkul/Shop/src/Resources/lang/en/app.php index 11fcf7d4490..8e5e03919ce 100755 --- a/packages/Webkul/Shop/src/Resources/lang/en/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/en/app.php @@ -301,12 +301,12 @@ ], 'carousel' => [ - 'view-all' => 'View All' + 'view-all' => 'View All', ], ], 'range-slider' => [ - 'range' => 'Range:' + 'range' => 'Range:', ], ], @@ -352,8 +352,8 @@ ], ], - 'view' => [ - 'type' => [ + 'view' => [ + 'type' => [ 'bundle' => [ 'none' => 'None', ], @@ -365,7 +365,7 @@ ], 'grouped' => [ - 'name' => 'Name' + 'name' => 'Name', ], ], ], @@ -383,8 +383,8 @@ ], 'view' => [ - 'empty' => 'No products available in this category', - 'load-more' => 'Load More', + 'empty' => 'No products available in this category', + 'load-more' => 'Load More', ], ], @@ -445,6 +445,7 @@ 'code' => 'Coupon code', 'applied' => 'Coupon applied', 'apply' => 'Apply Coupon', + 'error' => 'Something went wrong', 'remove' => 'Remove Coupon', 'invalid' => 'Coupon code is invalid.', 'discount' => 'Coupon Discount', @@ -489,9 +490,6 @@ 'security-warning' => 'Suspicious activity found!!!', - - - 'invalid_vat_format' => 'The given vat id has a wrong format', 'nothing-to-delete' => 'Nothing to delete', diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/coupon.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/coupon.blade.php index 157d04ed9db..e6cf28bd923 100644 --- a/packages/Webkul/Shop/src/Resources/views/checkout/cart/coupon.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/coupon.blade.php @@ -69,7 +69,7 @@ self.disableButton = true; - axios.post('{{ route('shop.checkout.cart.coupon.apply') }}', {code: self.couponCode}) + axios.post('{{ route('shop.api.checkout.cart.coupon.apply') }}', {code: self.couponCode}) .then(function(response) { if (response.data.success) { self.$emit('onApplyCoupon'); @@ -102,7 +102,7 @@ if (self.removeIconEnabled) { self.removeIconEnabled = false; - axios.delete('{{ route('shop.checkout.cart.coupon.remove') }}') + axios.delete('{{ route('shop.api.checkout.cart.coupon.remove') }}') .then(function(response) { self.$emit('onRemoveCoupon') diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php index 56411592766..f741802e708 100755 --- a/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/checkout/cart/index.blade.php @@ -203,48 +203,50 @@ class="text-[16px] font-medium cursor-pointer" - - - - @lang('shop::app.checkout.cart.coupon.code') - - - - - + + + @lang('shop::app.checkout.cart.coupon.code') + + + + + + + + + + - + @lang('shop::app.customers.account.save') + + +

- - - +

@@ -336,6 +338,28 @@ class="block place-self-end bg-navyBlue text-white text-base w-max font-medium p }) .catch(error => {}); }, + + applyCoupon(params) { + this.$axios.post('{{ route('shop.api.checkout.cart.coupon.apply') }}', params) + .then(response => { + this.$refs.modal.toggle; + alert(response.data.message); + this.cart = response.data.data; + }) + .catch(error => { + console.log('error'); + }); + }, + + removeCoupon() { + this.$axios.post('{{ route('shop.api.checkout.cart.coupon.remove') }}', { + '_method': 'DELETE', + }) + .then(response => { + this.cart = response.data.data; + }) + .catch(error => {}); + }, } }); diff --git a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/coupon.blade.php b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/coupon.blade.php index fd8635c48b4..08902b22b58 100644 --- a/packages/Webkul/Shop/src/Resources/views/checkout/onepage/coupon.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/checkout/onepage/coupon.blade.php @@ -86,7 +86,7 @@ class="icon-cancel text-[30px] cursor-pointer" methods: { applyCoupon(params) { - this.$axios.post("{{ route('shop.checkout.cart.coupon.apply') }}", params) + this.$axios.post("{{ route('shop.api.checkout.cart.coupon.apply') }}", params) .then((response) => { alert(response.data.data.message) @@ -97,7 +97,7 @@ class="icon-cancel text-[30px] cursor-pointer" }, destroyCoupon() { - this.$axios.delete("{{ route('shop.checkout.cart.coupon.remove') }}", { + this.$axios.delete("{{ route('shop.api.checkout.cart.coupon.remove') }}", { '_token': "{{ csrf_token() }}" }) .then((response) => { diff --git a/packages/Webkul/Shop/src/Resources/views/components/modal/index.blade.php b/packages/Webkul/Shop/src/Resources/views/components/modal/index.blade.php index 6aaf39a3e32..7458970ae92 100644 --- a/packages/Webkul/Shop/src/Resources/views/components/modal/index.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/components/modal/index.blade.php @@ -4,6 +4,7 @@ @isset($toggle)