diff --git a/packages/Sarga/API/Http/Controllers/Carts.php b/packages/Sarga/API/Http/Controllers/Carts.php index f74206e79..d7a931b4e 100644 --- a/packages/Sarga/API/Http/Controllers/Carts.php +++ b/packages/Sarga/API/Http/Controllers/Carts.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Event; use Illuminate\Support\Facades\Log; use Sarga\API\Http\Resources\Checkout\CartResource; +use Webkul\CartRule\Repositories\CartRuleCouponRepository; use Webkul\Checkout\Facades\Cart; use Webkul\Checkout\Repositories\CartItemRepository; use Webkul\Customer\Repositories\WishlistRepository; @@ -187,32 +188,47 @@ class Carts extends CartController * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ - public function applyCoupon(Request $request) + public function applyKupon(CartRuleCouponRepository $cartRuleCouponRepository) { - $couponCode = $request->code; + $couponCode = request()->get('code'); try { if (strlen($couponCode)) { - Cart::setCouponCode($couponCode)->collectTotals(); + $coupon = $cartRuleCouponRepository->findOneByField('code', $couponCode); - if (Cart::getCart()->coupon_code == $couponCode) { - return response([ - 'message' => __('rest-api::app.checkout.cart.coupon.success'), - 'cart' => new CartResource(Cart::getCart()) - ]); + if ($coupon->cart_rule->status) { + if (Cart::getCart()->coupon_code == $couponCode) { + return response()->json([ + 'success' => false, + 'message' => trans('shop::app.checkout.total.coupon-already-applied'), + ]); + } + + Cart::setCouponCode($couponCode)->collectTotals(); + + $cart = Cart::getCart(); + + if ($cart->coupon_code == $couponCode) { + return response()->json([ + 'success' => true, + 'data' => new \TPS\API\Http\Resources\Checkout\CartResource($cart), + 'message' => trans('shop::app.checkout.total.success-coupon'), + ]); + } } } - return response([ - 'message' => __('rest-api::app.checkout.cart.coupon.invalid'), - ], 400); + return response()->json([ + 'success' => false, + 'message' => trans('shop::app.checkout.total.invalid-coupon'), + ]); } catch (\Exception $e) { report($e); - return response([ - 'message' => __('rest-api::app.checkout.cart.coupon.apply-issue'), - ], 400); - + return response()->json([ + 'success' => false, + 'message' => trans('shop::app.checkout.total.coupon-apply-issue'), + ]); } }