Server IP : 162.213.251.212 / Your IP : 18.188.243.41 [ Web Server : LiteSpeed System : Linux business55.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : allssztx ( 535) PHP Version : 8.1.31 Disable Function : NONE Domains : 1 Domains MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/home/allssztx/public_html/easybuyer/app/Http/Controllers/ |
Upload File : |
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Response; use Illuminate\Support\Str; use App\Models\Product; use App\Models\Cart; use App\Models\Coupon; use Carbon\Carbon; use Auth; class CartController extends Controller { public function index(Request $req) { $sessId = session()->getId(); $req->session()->put('session_id',$sessId); if(Auth::check()) { $data['cartItem'] = Cart::where('user_id',Auth::id())->get(); // $data['cartItem'] = Cart::all(); return view('cart',$data); } else { $data['cartItem'] = Cart::where('session_id',session('session_id'))->get(); // $data['cartItem'] = Cart::all(); return view('cart',$data); // return back()->with('error','Please Login First'); } } public function cartCount() { if (auth()->check()) { $cartCount = Cart::where('user_id', auth()->id())->count(); } else { $cartCount = session()->has('cart') ? count(session('cart')) : 0; } return response()->json(['count' => $cartCount]); } public function insert(Request $req) { try { $sessId = session()->getId(); $req->session()->put('session_id', $sessId); $pro_id = $req->id; $pro_quantity = $req->qty; $pro_color = $req->color; $pro_size = $req->size; $varient = $req->varient; $product = Product::where('product_id', $pro_id)->first(); if (!$product) { return response()->json(['error' => 'Product not found']); } $product_category_id = $product->product_category_id; if (Auth::user()) { if (auth()->check()) { $cartQuery = Cart::where('user_id', Auth::id()) ->where('product_id', $pro_id) ->where('color_id', $pro_color) ->where('size_id', $pro_size) ->where('varient_id', $varient); if ($cartQuery->exists()) { $cart = $cartQuery->first(); $cart->product_quantity += $pro_quantity; $cart->save(); } else { $newCartItem = new Cart; $newCartItem->user_id = Auth::user()->id; $newCartItem->product_id = $pro_id; $newCartItem->product_quantity = $pro_quantity; $newCartItem->color_id = $pro_color; $newCartItem->size_id = $pro_size; $newCartItem->varient_id = $varient; $newCartItem->save(); } $this->applyCategoryDiscount(Auth::id(), $product_category_id); $updatedCartItem = Cart::where('user_id', Auth::id())->where('product_id', $pro_id)->first(); return response()->json([ 'success' => 'Cart Updated Successfully', 'discount' => $updatedCartItem->discount ?? 0, 'final_price' => $updatedCartItem->final_price ?? $product->product_origional_price, ]); } else { return response()->json(['loginerror' => 'Please Login First']); } } else { $cartQuery = Cart::where('session_id', session('session_id')) ->where('product_id', $pro_id) ->where('color_id', $pro_color) ->where('size_id', $pro_size) ->where('varient_id', $varient); if ($cartQuery->exists()) { $cart = $cartQuery->first(); $cart->product_quantity += $pro_quantity; $cart->save(); } else { $newCartItem = new Cart; $newCartItem->session_id = session('session_id'); $newCartItem->product_id = $pro_id; $newCartItem->product_quantity = $pro_quantity; $newCartItem->color_id = $pro_color; $newCartItem->size_id = $pro_size; $newCartItem->varient_id = $varient; $newCartItem->save(); } $this->applyCategoryDiscount(session('session_id'), $product_category_id, false); $updatedCartItem = Cart::where('session_id', session('session_id'))->where('product_id', $pro_id)->first(); return response()->json([ 'success' => 'Cart Updated Successfully', 'discount' => $updatedCartItem->discount ?? 0, 'final_price' => $updatedCartItem->final_price ?? $product->product_origional_price, ]); } } catch (\Exception $e) { return response()->json(['error' => 'An error occurred: ' . $e->getMessage()]); } } public function showProductDetail($id) { $product = Product::find($id); if (!$product) { abort(404, 'Product not found'); } // Fetch cart details if needed $cartItem = Cart::where('product_id', $id) ->where('user_id', Auth::id()) ->orWhere('session_id', session('session_id')) ->first(); $discount = $cartItem->discount ?? 0; $finalPrice = $cartItem->final_price ?? $product->product_origional_price; return view('product_detail', [ 'product' => $product, 'discount' => $discount, 'final_price' => $finalPrice ]); } private function applyCategoryDiscount($identifier, $product_category_id, $isAuth = true) { $discountPercentage = 10; if ($isAuth) { $cartItems = Cart::where('user_id', $identifier) ->whereHas('product', function ($query) use ($product_category_id) { $query->where('product_category_id', $product_category_id); })->get(); } else { $cartItems = Cart::where('session_id', $identifier) ->whereHas('product', function ($query) use ($product_category_id) { $query->where('product_category_id', $product_category_id); })->get(); } foreach ($cartItems as $cartItem) { $product = Product::find($cartItem->product_id); $totalPrice = $product->product_origional_price * $cartItem->product_quantity; $discountAmount = ($totalPrice * $discountPercentage) / 100; $cartItem->discount = $discountAmount; $cartItem->final_price = $totalPrice - $discountAmount; $cartItem->save(); } } public function update(Request $req) { $id = $req->id; $pro_id = $req->pro_id; $pro_quantity = $req->qty; if(Auth::user()) { if (auth()->check()) { $prod_check = Product::where('product_id',$pro_id)->first(); if($prod_check) { $UpdateCart = Cart::find($id); $UpdateCart->product_quantity = $pro_quantity; $UpdateCart->save(); return response()->json(['success'=>'Cart Updated Successfully']); } } else { return response()->json(['loginerror'=>'Please Login First']); } } else { $prod_check = Product::where('product_id',$pro_id)->first(); if($prod_check) { $UpdateCart = Cart::find($id); $UpdateCart->product_quantity = $pro_quantity; $UpdateCart->save(); return response()->json(['success'=>'Cart Updated Successfully']); } } } public function delete(Request $req) { $id = $req->id; $DeleteCart = Cart::find($id); $DeleteCart->delete(); } public function decrease(Request $req) { $id = $req->id; $DecQty = Cart::find($id); $DecQty->product_quantity = $DecQty->product_quantity - 1; $DecQty->save(); return response()->json(['success'=>'decreased']); } public function increase(Request $req) { $id = $req->id; $DecQty = Cart::find($id); $DecQty->product_quantity = $DecQty->product_quantity + 1; $DecQty->save(); return response()->json(['success'=>'increase']); } public function delete_all() { if(Auth::check()) { Cart::where('user_id', Auth::id())->delete(); return redirect('cart'); } else { Cart::where('session_id', session('session_id'))->delete(); return redirect('cart'); } // Cart::truncate(); // return redirect('cart'); } public function check_coupon(Request $req) { $coupon = $req->coupan; $data = Coupon::where('coupon_code', $coupon)->where('coupon_status', 1)->first(); $current_date = Carbon::now(); if(!$data) { return response()->json(['notfound'=>'Invalid Coupon Please Enter Valid Coupon Code!']); } else { $dbase_date = $data->coupon_end_date; if($dbase_date < $current_date) { return response()->json(['expire'=>'Coupon Code You Entered Is Expired!']); } else { $req->session()->put('coupon',[ 'id' => $data->coupon_id, 'code' => $data->coupon_code, 'percent' => $data->coupon_percent, 'sdate' => $data->coupon_start_date, 'edate' => $data->coupon_end_date, 'status' => $data->coupon_status, ]); return response()->json(['success'=>'Coupon Added Successfully!']); } } } // public function xyzz() // { // session()->forget('coupon'); // } }