ok
Direktori : /home2/selectio/www/innerstore/app/Http/Controllers/Web/ |
Current File : /home2/selectio/www/innerstore/app/Http/Controllers/Web/CouponController.php |
<?php namespace App\Http\Controllers\Web; use App\CPU\CartManager; use App\CPU\Helpers; use App\Http\Controllers\Controller; use App\Model\Coupon; use App\Model\Order; use Carbon\Carbon; use Illuminate\Http\Request; class CouponController extends Controller { public function apply(Request $request) { $couponLimit = Order::where(['customer_id'=> auth('customer')->id(), 'coupon_code'=> $request['code']]) ->groupBy('order_group_id')->get()->count(); $coupon_f = Coupon::where(['code' => $request['code']]) ->where('status',1) ->whereDate('start_date', '<=', date('Y-m-d')) ->whereDate('expire_date', '>=', date('Y-m-d'))->first(); if(!$coupon_f){ return response()->json([ 'status' => 0, 'messages' => ['0' => 'Invalid Coupon'] ]); } if($coupon_f && $coupon_f->coupon_type == 'first_order'){ $coupon = $coupon_f; }else{ $coupon = $coupon_f->limit > $couponLimit ? $coupon_f : null; } if($coupon && $coupon->coupon_type == 'first_order'){ $orders = Order::where(['customer_id'=> auth('customer')->id()])->count(); if($orders>0){ return response()->json([ 'status' => 0, 'messages' => ['0' => "Sorry this coupon is not valid for this user!"] ]); } } if ($coupon && (($coupon->coupon_type == 'first_order') || ($coupon->coupon_type == 'discount_on_purchase' && ($coupon->customer_id == '0' || $coupon->customer_id == auth('customer')->id())))) { $total = 0; foreach (CartManager::get_cart() as $cart) { if($coupon->seller_id == '0' || (is_null($coupon->seller_id) && $cart->seller_is=='admin') || ($coupon->seller_id == $cart->seller_id && $cart->seller_is=='seller')){ $product_subtotal = $cart['price'] * $cart['quantity']; $total += $product_subtotal; } } if ($total >= $coupon['min_purchase']) { if ($coupon['discount_type'] == 'percentage') { $discount = (($total / 100) * $coupon['discount']) > $coupon['max_discount'] ? $coupon['max_discount'] : (($total / 100) * $coupon['discount']); } else { $discount = $coupon['discount']; } session()->put('coupon_code', $request['code']); session()->put('coupon_type', $coupon->coupon_type); session()->put('coupon_discount', $discount); session()->put('coupon_bearer', $coupon->coupon_bearer); session()->put('coupon_seller_id', $coupon->seller_id); return response()->json([ 'status' => 1, 'discount' => Helpers::currency_converter($discount), 'total' => Helpers::currency_converter($total - $discount), 'messages' => ['0' => 'Coupon Applied Successfully!'] ]); } }elseif($coupon && $coupon->coupon_type == 'free_delivery' && ($coupon->customer_id == '0' || $coupon->customer_id == auth('customer')->id())){ $total = 0; $shipping_fee = 0; foreach (CartManager::get_cart() as $cart) { if($coupon->seller_id == '0' || (is_null($coupon->seller_id) && $cart->seller_is=='admin') || ($coupon->seller_id == $cart->seller_id && $cart->seller_is=='seller')) { $product_subtotal = $cart['price'] * $cart['quantity']; $total += $product_subtotal; if (is_null($coupon->seller_id) || $coupon->seller_id == '0' || $coupon->seller_id == $cart->seller_id) { $shipping_fee += $cart['shipping_cost']; } } } if ($total >= $coupon['min_purchase']) { session()->put('coupon_code', $request['code']); session()->put('coupon_type', $coupon->coupon_type); session()->put('coupon_discount', $shipping_fee); session()->put('coupon_bearer', $coupon->coupon_bearer); session()->put('coupon_seller_id', $coupon->seller_id); return response()->json([ 'status' => 1, 'discount' => Helpers::currency_converter($shipping_fee), 'total' => Helpers::currency_converter($total - $shipping_fee), 'messages' => ['0' => 'Coupon Applied Successfully!'] ]); } } return response()->json([ 'status' => 0, 'messages' => ['0' => 'Invalid Coupon'] ]); } }