From eed4cce3b067a41fc68d5e27b8b9906a4ab76e6c Mon Sep 17 00:00:00 2001 From: Devansh Date: Mon, 10 Aug 2020 16:07:08 +0530 Subject: [PATCH] Apply And Remove Coupon API Implemented --- .../Http/Controllers/Shop/CartController.php | 59 +++++++++++++++++-- packages/Webkul/API/Http/routes.php | 7 ++- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/packages/Webkul/API/Http/Controllers/Shop/CartController.php b/packages/Webkul/API/Http/Controllers/Shop/CartController.php index dbecc7c01..d54bddb9f 100644 --- a/packages/Webkul/API/Http/Controllers/Shop/CartController.php +++ b/packages/Webkul/API/Http/Controllers/Shop/CartController.php @@ -2,15 +2,15 @@ namespace Webkul\API\Http\Controllers\Shop; +use Cart; use Exception; use Illuminate\Http\JsonResponse; -use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Log; +use Illuminate\Support\Facades\Event; use Webkul\Checkout\Repositories\CartRepository; use Webkul\Checkout\Repositories\CartItemRepository; -use Webkul\API\Http\Resources\Checkout\Cart as CartResource; -use Cart; use Webkul\Customer\Repositories\WishlistRepository; +use Webkul\API\Http\Resources\Checkout\Cart as CartResource; class CartController extends Controller { @@ -70,7 +70,7 @@ class CartController extends Controller } /** - * Get customer cart + * Get customer cart. * * @return \Illuminate\Http\JsonResponse */ @@ -242,4 +242,55 @@ class CartController extends Controller 'data' => $cart ? new CartResource($cart) : null, ]); } + + /** + * Apply coupon code. + * + * @return \Illuminate\Http\JsonResponse + */ + public function applyCoupon() + { + $couponCode = request()->get('code'); + + try { + if (strlen($couponCode)) { + Cart::setCouponCode($couponCode)->collectTotals(); + + if (Cart::getCart()->coupon_code == $couponCode) { + return response()->json([ + 'success' => true, + 'message' => trans('shop::app.checkout.total.success-coupon'), + ]); + } + } + + return response()->json([ + 'success' => false, + 'message' => trans('shop::app.checkout.total.invalid-coupon'), + ]); + } catch (\Exception $e) { + report($e); + + return response()->json([ + 'success' => false, + 'message' => trans('shop::app.checkout.total.coupon-apply-issue'), + ]); + } + + } + + /** + * Remove coupon code. + * + * @return \Illuminate\Http\JsonResponse + */ + public function removeCoupon() + { + Cart::removeCouponCode()->collectTotals(); + + return response()->json([ + 'success' => true, + 'message' => trans('shop::app.checkout.total.remove-coupon'), + ]); + } } \ No newline at end of file diff --git a/packages/Webkul/API/Http/routes.php b/packages/Webkul/API/Http/routes.php index c6ec10827..f4c3d0cb7 100755 --- a/packages/Webkul/API/Http/routes.php +++ b/packages/Webkul/API/Http/routes.php @@ -75,7 +75,7 @@ Route::group(['prefix' => 'api'], function ($router) { 'resource' => 'Webkul\API\Http\Resources\Catalog\ProductReview', 'authorization_required' => true ]); - + //Channel routes Route::get('channels', 'ResourceController@index')->defaults('_config', [ @@ -246,7 +246,6 @@ Route::group(['prefix' => 'api'], function ($router) { Route::get('wishlist/add/{id}', 'WishlistController@create'); - //Checkout routes Route::group(['prefix' => 'checkout'], function ($router) { Route::post('cart/add/{id}', 'CartController@store'); @@ -259,6 +258,10 @@ Route::group(['prefix' => 'api'], function ($router) { Route::get('cart/remove-item/{id}', 'CartController@destroyItem'); + Route::post('cart/coupon', 'CartController@applyCoupon'); + + Route::delete('cart/coupon', 'CartController@removeCoupon'); + Route::get('cart/move-to-wishlist/{id}', 'CartController@moveToWishlist'); Route::post('save-address', 'CheckoutController@saveAddress');