whoami7 - Manager
:
/
home
/
dataiclx
/
datasyspk.com
/
app
/
Http
/
Controllers
/
Upload File:
files >> /home/dataiclx/datasyspk.com/app/Http/Controllers/CartController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Product; use App\SubSubCategory; use App\Category; use App\Cart; use Auth; use Session; use App\Color; use Cookie; class CartController extends Controller { public function index(Request $request) { //dd($cart->all()); $categories = Category::all(); if(auth()->user() != null) { $user_id = Auth::user()->id; if($request->session()->get('temp_user_id')) { Cart::where('temp_user_id', $request->session()->get('temp_user_id')) ->update( [ 'user_id' => $user_id, 'temp_user_id' => null ] ); Session::forget('temp_user_id'); } $carts = Cart::where('user_id', $user_id)->get(); } else { $temp_user_id = $request->session()->get('temp_user_id'); // $carts = Cart::where('temp_user_id', $temp_user_id)->get(); $carts = ($temp_user_id != null) ? Cart::where('temp_user_id', $temp_user_id)->get() : [] ; } return view('frontend.view_cart', compact('categories', 'carts')); } public function showCartModal(Request $request) { $product = Product::find($request->id); return view('frontend.partials.addToCart', compact('product')); } public function addToCart(Request $request) { $product = Product::find($request->id); $carts = array(); $data = array(); if(auth()->user() != null) { $user_id = Auth::user()->id; $data['user_id'] = $user_id; $carts = Cart::where('user_id', $user_id)->get(); } else { if($request->session()->get('temp_user_id')) { $temp_user_id = $request->session()->get('temp_user_id'); } else { $temp_user_id = bin2hex(random_bytes(10)); $request->session()->put('temp_user_id', $temp_user_id); } $data['temp_user_id'] = $temp_user_id; $carts = Cart::where('temp_user_id', $temp_user_id)->get(); } $data['product_id'] = $product->id; $data['owner_id'] = $product->user_id; $str = ''; $tax = 0; if(count($carts) > 0) { // $carts[0]['']; $productcheck = \App\Product::find($carts[0]['product_id']); if($productcheck->online_sell == 0 && $product->online_sell != 0) { return array( 'status' => 0, 'cart_count' => count($carts), 'modal_view' => view('frontend.partials.inquiryProductOnly')->render(), 'nav_cart_view' => view('frontend.partials.cart')->render(), ); } if($productcheck->online_sell == 1 && $product->online_sell == 0) { return array( 'status' => 0, 'cart_count' => count($carts), 'modal_view' => view('frontend.partials.onlineProductOnly')->render(), 'nav_cart_view' => view('frontend.partials.cart')->render(), ); } } if($product->digital != 1 && $request->quantity < $product->min_qty) { return array( 'status' => 0, 'cart_count' => count($carts), 'modal_view' => view('frontend.partials.minQtyNotSatisfied', [ 'min_qty' => $product->min_qty ])->render(), 'nav_cart_view' => view('frontend.partials.cart')->render(), ); } //check the color enabled or disabled for the product if($request->has('color')) { $str = $request['color']; } if ($product->digital != 1) { //Gets all the choice values of customer choice option and generate a string like Black-S-Cotton foreach (json_decode(Product::find($request->id)->choice_options) as $key => $choice) { if($str != null){ $str .= '-'.str_replace(' ', '', $request['attribute_id_'.$choice->attribute_id]); } else{ $str .= str_replace(' ', '', $request['attribute_id_'.$choice->attribute_id]); } } } $data['variation'] = $str; if($str != null && $product->variant_product){ $product_stock = $product->stocks->where('variant', $str)->first(); $price = $product_stock->price; $quantity = $product_stock->qty; if($quantity < $request['quantity']){ return array( 'status' => 0, 'cart_count' => count($carts), 'modal_view' => view('frontend.partials.outOfStockCart')->render(), 'nav_cart_view' => view('frontend.partials.cart')->render(), ); } } else{ $price = $product->unit_price; } //discount calculation $discount_applicable = false; if ($product->discount_start_date == null) { $discount_applicable = true; } elseif (strtotime(date('d-m-Y H:i:s')) >= $product->discount_start_date && strtotime(date('d-m-Y H:i:s')) <= $product->discount_end_date) { $discount_applicable = true; } if ($discount_applicable) { if($product->discount_type == 'percent'){ $price -= ($price*$product->discount)/100; } elseif($product->discount_type == 'amount'){ $price -= $product->discount; } } //calculation of taxes foreach ($product->taxes as $product_tax) { if($product_tax->tax_type == 'percent'){ $tax += ($price * $product_tax->tax) / 100; } elseif($product_tax->tax_type == 'amount'){ $tax += $product_tax->tax; } } $data['quantity'] = $request['quantity']; $data['price'] = $price; $data['tax'] = $tax; // $data['shipping'] = 0; $data['shipping_cost'] = 0; $data['product_referral_code'] = null; $data['cash_on_delivery'] = $product->cash_on_delivery; $data['digital'] = $product->digital; if ($request['quantity'] == null){ $data['quantity'] = 1; } if(Cookie::has('referred_product_id') && Cookie::get('referred_product_id') == $product->id) { $data['product_referral_code'] = Cookie::get('product_referral_code'); } if($carts && count($carts) > 0){ $foundInCart = false; foreach ($carts as $key => $cartItem){ if($cartItem['product_id'] == $request->id) { $product_stock = $product->stocks->where('variant', $str)->first(); $quantity = $product_stock->qty; if($quantity < $cartItem['quantity'] + $request['quantity']){ return array( 'status' => 0, 'cart_count' => count($carts), 'modal_view' => view('frontend.partials.outOfStockCart')->render(), 'nav_cart_view' => view('frontend.partials.cart')->render(), ); } if(($str != null && $cartItem['variation'] == $str) || $str == null){ $foundInCart = true; $cartItem['quantity'] += $request['quantity']; $cartItem->save(); } } } if (!$foundInCart) { Cart::create($data); } } else{ Cart::create($data); } if(auth()->user() != null) { $user_id = Auth::user()->id; $carts = Cart::where('user_id', $user_id)->get(); } else { $temp_user_id = $request->session()->get('temp_user_id'); $carts = Cart::where('temp_user_id', $temp_user_id)->get(); } return array( 'status' => 1, 'cart_count' => count($carts), 'modal_view' => view('frontend.partials.addedToCart', compact('product', 'data'))->render(), 'nav_cart_view' => view('frontend.partials.cart')->render(), ); } //removes from Cart public function removeFromCart(Request $request) { Cart::destroy($request->id); if(auth()->user() != null) { $user_id = Auth::user()->id; $carts = Cart::where('user_id', $user_id)->get(); } else { $temp_user_id = $request->session()->get('temp_user_id'); $carts = Cart::where('temp_user_id', $temp_user_id)->get(); } return array( 'cart_count' => count($carts), 'cart_view' => view('frontend.partials.cart_details', compact('carts'))->render(), 'nav_cart_view' => view('frontend.partials.cart')->render(), ); } //updated the quantity for a cart item public function updateQuantity(Request $request) { $object = Cart::findOrFail($request->id); if($object['id'] == $request->id){ $product = \App\Product::find($object['product_id']); $product_stock = $product->stocks->where('variant', $object['variation'])->first(); $quantity = $product_stock->qty; if($quantity >= $request->quantity) { if($request->quantity >= $product->min_qty){ $object['quantity'] = $request->quantity; } } $object->save(); } if(auth()->user() != null) { $user_id = Auth::user()->id; $carts = Cart::where('user_id', $user_id)->get(); } else { $temp_user_id = $request->session()->get('temp_user_id'); $carts = Cart::where('temp_user_id', $temp_user_id)->get(); } return array( 'cart_count' => count($carts), 'cart_view' => view('frontend.partials.cart_details', compact('carts'))->render(), 'nav_cart_view' => view('frontend.partials.cart')->render(), ); } }
Copyright ©2021 || Defacer Indonesia