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)
diff --git a/packages/Webkul/Shop/src/Routes/api.php b/packages/Webkul/Shop/src/Routes/api.php
index 5d9567c6a9e..81ab5f5c7bb 100644
--- a/packages/Webkul/Shop/src/Routes/api.php
+++ b/packages/Webkul/Shop/src/Routes/api.php
@@ -5,11 +5,10 @@
use Webkul\Shop\Http\Controllers\API\CartController;
use Webkul\Shop\Http\Controllers\API\CategoryController;
use Webkul\Shop\Http\Controllers\API\CompareController;
+use Webkul\Shop\Http\Controllers\API\OnepageController;
use Webkul\Shop\Http\Controllers\API\ProductController;
use Webkul\Shop\Http\Controllers\API\ReviewController;
use Webkul\Shop\Http\Controllers\API\WishlistController;
-use Webkul\Shop\Http\Controllers\API\OnepageController;
-
Route::group(['middleware' => ['locale', 'theme', 'currency'], 'prefix' => 'api'], function () {
Route::controller(ProductController::class)->group(function () {
@@ -47,6 +46,10 @@
Route::put('', 'update')->name('shop.api.checkout.cart.update');
Route::delete('', 'destroy')->name('shop.api.checkout.cart.destroy');
+
+ Route::post('coupon', 'storeCoupon')->name('shop.api.checkout.cart.coupon.apply');
+
+ Route::delete('coupon', 'destroyCoupon')->name('shop.api.checkout.cart.coupon.remove');
});
Route::controller(CompareController::class)->prefix('compare-items')->group(function () {
@@ -58,18 +61,18 @@
Route::delete('all', 'destroyAll')->name('shop.api.compare.destroy_all');
});
-
+
Route::controller(OnepageController::class)->prefix('checkout/onepage')->group(function () {
Route::get('summary', 'summary')->name('shop.checkout.onepage.summary');
-
+
Route::post('addresses', 'storeAddress')->name('shop.checkout.onepage.addresses.store');
-
+
Route::post('shipping-methods', 'storeShippingMethod')->name('shop.checkout.onepage.shipping_methods.store');
-
+
Route::post('payment-methods', 'storePaymentMethod')->name('shop.checkout.onepage.payment_methods.store');
Route::post('orders', 'storeOrder')->name('shop.checkout.onepage.orders.store');
-
+
Route::post('check-minimum-order', 'checkMinimumOrder')->name('shop.checkout.onepage.check_minimum_order');
});
@@ -79,7 +82,7 @@
Route::post('', 'store')->name('api.shop.customers.account.addresses.store');
});
-
+
Route::controller(WishlistController::class)->prefix('wishlist')->group(function () {
Route::get('', 'index')->name('shop.api.customers.account.wishlist.index');
diff --git a/packages/Webkul/Shop/src/Routes/checkout-routes.php b/packages/Webkul/Shop/src/Routes/checkout-routes.php
index 688682e319d..19f2e1aa9d6 100644
--- a/packages/Webkul/Shop/src/Routes/checkout-routes.php
+++ b/packages/Webkul/Shop/src/Routes/checkout-routes.php
@@ -10,10 +10,6 @@
*/
Route::controller(CartController::class)->prefix('checkout/cart')->group(function () {
Route::get('', 'index')->name('shop.checkout.cart.index');
-
- Route::post('coupon', 'storeCoupon')->name('shop.checkout.cart.coupon.apply');
-
- Route::delete('coupon', 'destroyCoupon')->name('shop.checkout.cart.coupon.remove');
});
Route::controller(OnepageController::class)->prefix('checkout/onepage')->group(function () {
From d7e55bde462acfa756ed882f2771e47ebcb0c26f Mon Sep 17 00:00:00 2001
From: amit kumar laravel
Date: Mon, 26 Jun 2023 19:23:28 +0530
Subject: [PATCH 2/2] update commented changes'
---
.../Webkul/Shop/src/Http/Controllers/API/CartController.php | 1 +
.../Shop/src/Resources/views/checkout/cart/index.blade.php | 2 +-
.../Shop/src/Resources/views/components/modal/index.blade.php | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/packages/Webkul/Shop/src/Http/Controllers/API/CartController.php b/packages/Webkul/Shop/src/Http/Controllers/API/CartController.php
index a48d41c02e6..cd8fc6970c8 100755
--- a/packages/Webkul/Shop/src/Http/Controllers/API/CartController.php
+++ b/packages/Webkul/Shop/src/Http/Controllers/API/CartController.php
@@ -117,6 +117,7 @@ public function update(): JsonResource
public function storeCoupon(): JsonResource
{
$couponCode = request()->input('code');
+
try {
if (strlen($couponCode)) {
$coupon = $this->cartRuleCouponRepository->findOneByField('code', $couponCode);
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 f741802e708..c403965d96f 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
@@ -191,7 +191,7 @@ class="text-[16px] font-medium"
class="text-[16px] font-medium cursor-pointer"
v-if="cart.discount_amount == 0"
>
-
+
@lang('shop::app.checkout.cart.coupon.apply')
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 7458970ae92..dc28919a2b6 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,7 +4,7 @@
@isset($toggle)