whoami7 - Manager
:
/
home
/
dataiclx
/
datasyspk.com
/
app
/
Http
/
Controllers
/
Upload File:
files >> /home/dataiclx/datasyspk.com/app/Http/Controllers/CheckoutController.php
<?php namespace App\Http\Controllers; use App\Utility\PayfastUtility; use Illuminate\Http\Request; use Auth; use App\Category; use App\Cart; use App\Http\Controllers\PaypalController; use App\Http\Controllers\InstamojoController; use App\Http\Controllers\ClubPointController; use App\Http\Controllers\StripePaymentController; use App\Http\Controllers\PublicSslCommerzPaymentController; use App\Http\Controllers\OrderController; use App\Http\Controllers\AffiliateController; use App\Http\Controllers\PaytmController; use App\Order; use App\CommissionHistory; use App\BusinessSetting; use App\Coupon; use App\CouponUsage; use App\User; use App\Address; use Session; use App\Utility\PayhereUtility; class CheckoutController extends Controller { public function __construct() { // } //check the selected payment gateway and redirect to that controller accordingly public function checkout(Request $request) { if ($request->payment_option != null) { $orderController = new OrderController; $orderController->store($request); $request->session()->put('payment_type', 'cart_payment'); if ($request->session()->get('order_id') != null) { if ($request->payment_option == 'paypal') { $paypal = new PaypalController; return $paypal->getCheckout(); } elseif ($request->payment_option == 'stripe') { $stripe = new StripePaymentController; return $stripe->stripe(); } elseif ($request->payment_option == 'sslcommerz') { $sslcommerz = new PublicSslCommerzPaymentController; return $sslcommerz->index($request); } elseif ($request->payment_option == 'instamojo') { $instamojo = new InstamojoController; return $instamojo->pay($request); } elseif ($request->payment_option == 'razorpay') { $razorpay = new RazorpayController; return $razorpay->payWithRazorpay($request); } elseif ($request->payment_option == 'proxypay') { $proxy = new ProxypayController; return $proxy->create_reference($request); } elseif ($request->payment_option == 'paystack') { if (\App\Addon::where('unique_identifier', 'otp_system')->first() != null && \App\Addon::where('unique_identifier', 'otp_system')->first()->activated && !Auth::user()->email) { flash(translate('Your email should be verified before order'))->warning(); return redirect()->route('cart')->send(); } $paystack = new PaystackController; return $paystack->redirectToGateway($request); } elseif ($request->payment_option == 'voguepay') { $voguePay = new VoguePayController; return $voguePay->customer_showForm(); } elseif ($request->payment_option == 'payhere') { $order = Order::findOrFail($request->session()->get('order_id')); $order_id = $order->id; $amount = $order->grand_total; $first_name = json_decode($order->shipping_address)->name; $last_name = 'X'; $phone = json_decode($order->shipping_address)->phone; $email = json_decode($order->shipping_address)->email; $address = json_decode($order->shipping_address)->address; $city = json_decode($order->shipping_address)->city; return PayhereUtility::create_checkout_form($order_id, $amount, $first_name, $last_name, $phone, $email, $address, $city); } elseif ($request->payment_option == 'payfast') { $order = Order::findOrFail($request->session()->get('order_id')); $order_id = $order->id; $amount = $order->grand_total; return PayfastUtility::create_checkout_form($order_id, $amount); } else if ($request->payment_option == 'ngenius') { $ngenius = new NgeniusController(); return $ngenius->pay(); } else if ($request->payment_option == 'iyzico') { $iyzico = new IyzicoController(); return $iyzico->pay(); } else if ($request->payment_option == 'nagad') { $nagad = new NagadController; return $nagad->getSession(); } else if ($request->payment_option == 'bkash') { $bkash = new BkashController; return $bkash->pay(); } else if ($request->payment_option == 'aamarpay') { $aamarpay = new AamarpayController; return $aamarpay->index(); } else if ($request->payment_option == 'flutterwave') { $flutterwave = new FlutterwaveController(); return $flutterwave->pay(); } else if ($request->payment_option == 'mpesa') { $mpesa = new MpesaController(); return $mpesa->pay(); } elseif ($request->payment_option == 'paytm') { if (Auth::user()->phone == null) { flash('Please add phone number to your profile')->warning(); return redirect()->route('profile'); } $paytm = new PaytmController; return $paytm->index(); } elseif ($request->payment_option == 'cash_on_delivery') { $request->session()->forget('club_point'); flash(translate("Your order has been placed successfully"))->success(); return redirect()->route('order_confirmed'); } elseif ($request->payment_option == 'wallet') { $user = Auth::user(); $order = Order::findOrFail($request->session()->get('order_id')); if ($user->balance >= $order->grand_total) { $user->balance -= $order->grand_total; $user->save(); return $this->checkout_done($request->session()->get('order_id'), null); } } else { $order = Order::findOrFail($request->session()->get('order_id')); $order->manual_payment = 1; $order->save(); $request->session()->forget('club_point'); flash(translate('Your order has been placed successfully. Please submit payment information from purchase history'))->success(); return redirect()->route('order_confirmed'); } } } else { flash(translate('Select Payment Option.'))->warning(); return back(); } } //redirects to this method after a successfull checkout public function checkout_done($order_id, $payment) { $order = Order::findOrFail($order_id); $order->payment_status = 'paid'; $order->payment_details = $payment; $order->save(); if (\App\Addon::where('unique_identifier', 'affiliate_system')->first() != null && \App\Addon::where('unique_identifier', 'affiliate_system')->first()->activated) { $affiliateController = new AffiliateController; $affiliateController->processAffiliatePoints($order); } if (\App\Addon::where('unique_identifier', 'club_point')->first() != null && \App\Addon::where('unique_identifier', 'club_point')->first()->activated) { if (Auth::check()) { $clubpointController = new ClubPointController; $clubpointController->processClubPoints($order); } } $vendor_commission_activation = true; if(\App\Addon::where('unique_identifier', 'seller_subscription')->first() != null && \App\Addon::where('unique_identifier', 'seller_subscription')->first()->activated && !get_setting('vendor_commission_activation')){ $vendor_commission_activation = false; } if($vendor_commission_activation){ foreach ($order->orderDetails as $key => $orderDetail) { $orderDetail->payment_status = 'paid'; $orderDetail->save(); $commission_percentage = 0; if (get_setting('category_wise_commission') != 1) { $commission_percentage = get_setting('vendor_commission'); } else if ($orderDetail->product->user->user_type == 'seller') { $commission_percentage = $orderDetail->product->category->commision_rate; } if ($orderDetail->product->user->user_type == 'seller') { $seller = $orderDetail->product->user->seller; $admin_commission = ($orderDetail->price * $commission_percentage)/100; if (get_setting('product_manage_by_admin') == 1) { $seller_earning = ($orderDetail->tax + $orderDetail->price) - $admin_commission; $seller->admin_to_pay += $seller_earning; } else { $seller_earning = ($orderDetail->tax + $orderDetail->shipping_cost + $orderDetail->price) - $admin_commission; $seller->admin_to_pay += $seller_earning; } $seller->save(); $commission_history = new CommissionHistory; $commission_history->order_id = $order->id; $commission_history->order_detail_id = $orderDetail->id; $commission_history->seller_id = $orderDetail->seller_id; $commission_history->admin_commission = $admin_commission; $commission_history->seller_earning = $seller_earning; $commission_history->save(); } } } else{ foreach ($order->orderDetails as $key => $orderDetail) { $orderDetail->payment_status = 'paid'; $orderDetail->save(); if ($orderDetail->product->user->user_type == 'seller') { $seller = $orderDetail->product->user->seller; $seller->admin_to_pay = $seller->admin_to_pay + $orderDetail->price + $orderDetail->tax + $orderDetail->shipping_cost; $seller->save(); } } } $order->commission_calculated = 1; $order->save(); Cart::where('owner_id', $order->seller_id) ->where('user_id', $order->user_id) ->delete(); Session::forget('club_point'); flash(translate('Payment completed'))->success(); return view('frontend.order_confirmed', compact('order')); } public function get_shipping_info(Request $request) { $carts = Cart::where('user_id', Auth::user()->id)->get(); // if (Session::has('cart') && count(Session::get('cart')) > 0) { if ($carts && count($carts) > 0) { $categories = Category::all(); return view('frontend.shipping_info', compact('categories', 'carts')); } flash(translate('Your cart is empty'))->success(); return back(); } public function store_shipping_info(Request $request) { if ($request->address_id == null) { flash(translate("Please add shipping address"))->warning(); return back(); } $carts = Cart::where('user_id', Auth::user()->id)->get(); foreach ($carts as $key => $cartItem) { $cartItem->address_id = $request->address_id; $cartItem->save(); } return view('frontend.delivery_info', compact('carts')); // return view('frontend.payment_select', compact('total')); } public function store_delivery_info(Request $request) { $carts = Cart::where('user_id', Auth::user()->id) ->where('owner_id', $request->owner_id) ->get(); if($carts->isEmpty()) { flash(translate('Your cart is empty'))->warning(); return redirect()->route('home'); } $shipping_info = Address::where('id', $carts[0]['address_id'])->first(); $total = 0; $tax = 0; $shipping = 0; $subtotal = 0; if ($carts && count($carts) > 0) { foreach ($carts as $key => $cartItem) { $product = \App\Product::find($cartItem['product_id']); $tax += $cartItem['tax'] * $cartItem['quantity']; $subtotal += $cartItem['price'] * $cartItem['quantity']; if ($request['shipping_type_' . $request->owner_id] == 'pickup_point') { $cartItem['shipping_type'] = 'pickup_point'; $cartItem['pickup_point'] = $request['pickup_point_id_' . $request->owner_id]; } else { $cartItem['shipping_type'] = 'home_delivery'; } $cartItem['shipping_cost'] = 0; if ($cartItem['shipping_type'] == 'home_delivery') { $cartItem['shipping_cost'] = getShippingCost($carts, $key); } if(isset($cartItem['shipping_cost']) && is_array(json_decode($cartItem['shipping_cost'], true))) { foreach(json_decode($cartItem['shipping_cost'], true) as $shipping_region => $val) { if($shipping_info['city'] == $shipping_region) { $cartItem['shipping_cost'] = (double)($val); break; } else { $cartItem['shipping_cost'] = 0; } } } else { if (!$cartItem['shipping_cost'] || $cartItem['shipping_cost'] == null || $cartItem['shipping_cost'] == 'null') { $cartItem['shipping_cost'] = 0; } } if($product->is_quantity_multiplied == 1 && get_setting('shipping_type') == 'product_wise_shipping') { $cartItem['shipping_cost'] = $cartItem['shipping_cost'] * $cartItem['quantity']; } $shipping += $cartItem['shipping_cost']; $cartItem->save(); } $total = $subtotal + $tax + $shipping; return view('frontend.payment_select', compact('carts', 'shipping_info', 'total')); } else { flash(translate('Your Cart was empty'))->warning(); return redirect()->route('home'); } } public function apply_coupon_code(Request $request) { $coupon = Coupon::where('code', $request->code)->first(); $carts = Cart::where('user_id', Auth::user()->id) ->where('owner_id', $request->owner_id) ->get(); $response_message = array(); if ($coupon != null) { if (strtotime(date('d-m-Y')) >= $coupon->start_date && strtotime(date('d-m-Y')) <= $coupon->end_date) { if (CouponUsage::where('user_id', Auth::user()->id)->where('coupon_id', $coupon->id)->first() == null) { $coupon_details = json_decode($coupon->details); if ($coupon->type == 'cart_base') { $subtotal = 0; $tax = 0; $shipping = 0; foreach ($carts as $key => $cartItem) { $subtotal += $cartItem['price'] * $cartItem['quantity']; $tax += $cartItem['tax'] * $cartItem['quantity']; $shipping += $cartItem['shipping_cost']; } $sum = $subtotal + $tax + $shipping; if ($sum >= $coupon_details->min_buy) { if ($coupon->discount_type == 'percent') { $coupon_discount = ($sum * $coupon->discount) / 100; if ($coupon_discount > $coupon_details->max_discount) { $coupon_discount = $coupon_details->max_discount; } } elseif ($coupon->discount_type == 'amount') { $coupon_discount = $coupon->discount; } } } elseif ($coupon->type == 'product_base') { $coupon_discount = 0; foreach ($carts as $key => $cartItem) { foreach ($coupon_details as $key => $coupon_detail) { if ($coupon_detail->product_id == $cartItem['product_id']) { if ($coupon->discount_type == 'percent') { $coupon_discount += $cartItem['price'] * $coupon->discount / 100; } elseif ($coupon->discount_type == 'amount') { $coupon_discount += $coupon->discount; } } } } } Cart::where('user_id', Auth::user()->id) ->where('owner_id', $request->owner_id) ->update( [ 'discount' => $coupon_discount / count($carts), 'coupon_code' => $request->code, 'coupon_applied' => 1 ] ); $response_message['response'] = 'success'; $response_message['message'] = translate('Coupon has been applied'); // flash(translate('Coupon has been applied'))->success(); } else { $response_message['response'] = 'warning'; $response_message['message'] = translate('You already used this coupon!'); // flash(translate('You already used this coupon!'))->warning(); } } else { $response_message['response'] = 'warning'; $response_message['message'] = translate('Coupon expired!'); // flash(translate('Coupon expired!'))->warning(); } } else { $response_message['response'] = 'danger'; $response_message['message'] = translate('Invalid coupon!'); // flash(translate('Invalid coupon!'))->warning(); } $carts = Cart::where('user_id', Auth::user()->id) ->where('owner_id', $request->owner_id) ->get(); $shipping_info = Address::where('id', $carts[0]['address_id'])->first(); $returnHTML = view('frontend.partials.cart_summary', compact('coupon', 'carts', 'shipping_info'))->render(); return response()->json(array('response_message' => $response_message, 'html'=>$returnHTML)); // return view('frontend.partials.cart_summary', compact('coupon', 'carts', 'shipping_info', 'response_message')); } public function remove_coupon_code(Request $request) { Cart::where('user_id', Auth::user()->id) ->where('owner_id', $request->owner_id) ->update( [ 'discount' => 0.00, 'coupon_code' => '', 'coupon_applied' => 0 ] ); $coupon = Coupon::where('code', $request->code)->first(); $carts = Cart::where('user_id', Auth::user()->id) ->where('owner_id', $request->owner_id) ->get(); // dd($carts); $shipping_info = Address::where('id', $carts[0]['address_id'])->first(); return view('frontend.partials.cart_summary', compact('coupon', 'carts', 'shipping_info')); // return back(); } public function apply_club_point(Request $request) { if (\App\Addon::where('unique_identifier', 'club_point')->first() != null && \App\Addon::where('unique_identifier', 'club_point')->first()->activated){ $point = $request->point; // if(Auth::user()->club_point->points >= $point) { if(Auth::user()->point_balance >= $point) { $request->session()->put('club_point', $point); flash(translate('Point has been redeemed'))->success(); } else { flash(translate('Invalid point!'))->warning(); } } return back(); } public function remove_club_point(Request $request) { $request->session()->forget('club_point'); return back(); } public function order_confirmed() { $order = Order::findOrFail(Session::get('order_id')); Cart::where('owner_id', $order->seller_id) ->where('user_id', $order->user_id) ->delete(); return view('frontend.order_confirmed', compact('order')); } }
Copyright ©2021 || Defacer Indonesia