shell bypass 403
<?php
namespace App\Http\Controllers\front;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Cart;
use App\Models\Item;
use App\Models\Promocode;
use App\Models\Variation;
use App\Helpers\helper;
use App\Models\About;
use Illuminate\Support\Facades\Auth;
use Session;
use Illuminate\Support\Facades\DB;
class CartController extends Controller
{
public function index(Request $request)
{
if (Auth::user() && Auth::user()->type == 2) {
$getcartlist = Cart::where('user_id', Auth::user()->id)->where('buynow', 0)->orderByDesc('id')->get();
$cartcount = Cart::where('user_id', Auth::user()->id)->where('buynow', 0)->orderByDesc('id')->count();
} else {
$getcartlist = Cart::where('session_id', Session::getId())->where('buynow', 0)->orderByDesc('id')->get();
$cartcount = Cart::where('session_id', Session::getId())->where('buynow', 0)->orderByDesc('id')->count();
}
$getsettings = About::first();
$dt = date('Y-m-d');
// product count tax
$itemtaxes = [];
$producttax = 0;
$tax_name = [];
$tax_price = [];
$getpromocodelist = Promocode::select('offer_name', 'offer_code', 'offer_type', 'offer_amount', 'min_amount', 'usage_type', 'usage_limit', 'start_date', 'expire_date', 'description')
->where('start_date', '<=', $dt)
->where('expire_date', '>=', $dt)
->where('is_available', 1)->orderBy('id', 'DESC')->get();
foreach ($getcartlist as $cart) {
$taxlist = helper::gettax($cart->tax);
if (!empty($taxlist)) {
foreach ($taxlist as $tax) {
if (!empty($tax)) {
$producttax = helper::taxRate($tax->tax, $cart->item_price, $cart->qty, $tax->type);
$itemTax['tax_name'] = $tax->name;
$itemTax['tax'] = $tax->tax;
$itemTax['tax_rate'] = $producttax;
$itemtaxes[] = $itemTax;
if (!in_array($tax->name, $tax_name)) {
$tax_name[] = $tax->name;
if ($tax->type == 1) {
$price = $tax->tax * $cart->qty;
}
if ($tax->type == 2) {
$price = ($tax->tax / 100) * ($cart->item_price);
}
$tax_price[] = $price;
} else {
if ($tax->type == 1) {
$price = $tax->tax * $cart->qty;
}
if ($tax->type == 2) {
$price = ($tax->tax / 100) * ($cart->item_price);
}
$tax_price[array_search($tax->name, $tax_name)] += $price;
}
}
}
}
}
$taxArr['tax'] = $tax_name;
$taxArr['rate'] = $tax_price;
return view('web.cart.cart', compact('getcartlist', 'getpromocodelist', 'getsettings', 'taxArr', 'cartcount'));
}
public function addtocart(Request $request)
{
try {
if ($request->buynow == 1) {
if (Auth::user() && Auth::user()->type == 2) {
$checkcart = Cart::where('buynow', 1)->where('user_id', Auth::user()->id)->delete();
} else {
$checkcart = Cart::where('buynow', 1)->where('session_id', Session::getId())->delete();
}
}
$variant_name = str_replace('_', ' ', $request->variation);
$item = Item::where('id', $request->item_id)->first();
if ($request->variation != null && $request->variation != "") {
$variation = Variation::where('name', str_replace(',', '|', $variant_name))->where('item_id', $request->item_id)->first();
if (Auth::user() && Auth::user()->type == 2) {
$cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('variation_id', $variation->id)->where('item_id', $request->item_id)->where('user_id', Auth::user()->id)->where('buynow', $request->buynow)->first();
} else {
$cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('variation_id', $variation->id)->where('item_id', $request->item_id)->where('session_id', Session::getId())->where('buynow', $request->buynow)->first();
}
if ($cartqty->totalqty != null && $cartqty->totalqty != "") {
$qty = $cartqty->totalqty + $request->qty;
} else {
$qty = $request->qty;
}
if ($variation->stock_management == 1) {
if ($variation->min_order != null && $variation->min_order != "" && $variation->min_order != 0) {
if ($qty < $variation->min_order) {
return response()->json(['status' => 0, 'message' => trans('messages.min_qty_message') . $variation->min_order], 200);
}
}
if ($variation->max_order != null && $variation->max_order != "" && $variation->max_order != 0) {
if ($qty > $variation->max_order) {
if ($cartqty->totalqty == null) {
return response()->json(['status' => 0, 'message' => trans('messages.max_qty_message') . $variation->max_order], 200);
} else {
return response()->json(['status' => 0, 'message' => trans('messages.cart_qty_msg') . ' ' . trans('messages.max_qty_message') . $variation->max_order], 200);
}
}
}
if ($qty > $variation->qty) {
return response()->json(['status' => 0, 'message' => trans('labels.out_of_stock_msg') . ' ' . $item->item_name . '(' . $variation->name . ')'], 200);
}
}
} else {
if (Auth::user() && Auth::user()->type == 2) {
$cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('item_id', $request->item_id)->where('user_id', Auth::user()->id)->where('buynow', $request->buynow)->first();
} else {
$cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('item_id', $request->item_id)->where('session_id', Session::getId())->where('buynow', $request->buynow)->first();
}
if ($cartqty->totalqty != null && $cartqty->totalqty != "") {
$qty = $cartqty->totalqty + $request->qty;
} else {
$qty = $request->qty;
}
if ($item->stock_management == 1) {
if ($item->min_order != null && $item->min_order != "" && $item->min_order != 0) {
if ($qty < $item->min_order) {
return response()->json(['status' => 0, 'message' => trans('messages.min_qty_message') . $item->min_order], 200);
}
}
if ($item->max_order != null && $item->max_order != "" && $item->max_order != 0) {
if ($qty > $item->max_order) {
if ($cartqty->totalqty == null) {
return response()->json(['status' => 0, 'message' => trans('messages.max_qty_message') . $item->max_order], 200);
} else {
return response()->json(['status' => 0, 'message' => trans('messages.cart_qty_msg') . ' ' . trans('messages.max_qty_message') . $item->max_order], 200);
}
}
}
if ($qty > $item->qty) {
return response()->json(['status' => 0, 'message' => trans('labels.out_of_stock_msg') . ' ' . $item->item_name], 200);
}
}
}
$cart = new Cart();
if (Auth::user() && Auth::user()->type == 2) {
$cart->user_id = Auth::user()->id;
$cart->session_id = "";
} else {
$cart->user_id = "";
$cart->session_id = Session::getId();
}
$cart->item_id = $request->item_id;
$cart->item_name = $request->item_name;
$cart->item_type = $request->item_type;
$cart->item_image = $request->image_name;
$cart->tax = $request->tax;
$cart->item_price = helper::number_format($request->item_price);
$cart->variation_id = $request->variation_id == "" ? "" : $request->variation_id;
$cart->variation = $request->variation == "" ? "" : $request->variation;
if (!empty($variation)) {
$cart->variation_price = $request->item_price;
}
$cart->qty = $request->qty;
$cart->extras_id = $request->extras_id;
$cart->extras_name = $request->extras_name;
$cart->extras_price = $request->extras_price;
$cart->buynow = $request->buynow;
$cart->save();
if (Auth::user() && Auth::user()->type == 2) {
$total_count = Cart::where('user_id', Auth::user()->id)->where('buynow', $request->buynow)->count();
} else {
$oldsessionid = Session::getId();
Session::put('oldsessionid', $oldsessionid);
$total_count = Cart::where('session_id', Session::getId())->where('buynow', $request->buynow)->count();
}
$extras_id = explode('|', $request->extras_id);
$extras_name = explode('|', $request->extras_name);
$extras_price = explode('|', $request->extras_price);
$extras_total_price = 0;
if ($extras_id != null && $extras_id != "") {
foreach ($extras_id as $key => $addons) {
$extras_total_price += (float)$extras_price[$key];
}
} else {
$extras_total_price = 0;
}
$total_price = ((float)$request->item_price + (float)$extras_total_price) * (float)$request->qty;
return response()->json(['status' => 1, 'message' => $request->item_name . ' ' . trans('messages.product_added_successfully'), 'data' => $total_count, 'total_item_count' => helper::get_item_cart($request->item_id), 'buynow' => $request->buynow, 'total_price' => $total_price], 200);
} catch (\Throwable $th) {
dd($th);
return response()->json(['status' => 0, 'message' => trans('messages.wrong')], 200);
}
}
public function deletecartitem(Request $request)
{
$checkcart = Cart::find($request->id);
if (!empty($checkcart)) {
$checkcart->delete();
session()->forget('discount_data');
return 1;
} else {
return 0;
}
}
public function qtyupdate(Request $request)
{
try {
$checkcart = Cart::find($request->id);
if ($checkcart->variation_id != null) {
$variant = Variation::where('id', $checkcart->variation_id)->where('item_id', $checkcart->item_id)->first();
if (Auth::user() && Auth::user()->type == 2) {
$cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('variation_id', $variant->id)->where('id', '!=', $request->id)->where('user_id', Auth::user()->id)->first();
} else {
$cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('variation_id', $variant->id)->where('id', '!=', $request->id)->where('session_id', Session::getId())->first();
}
if ($cartqty->totalqty != null && $cartqty->totalqty != "") {
$qty = $cartqty->totalqty + $request->qty;
} else {
$qty = $request->qty;
}
if ($variant->stock_management == 1) {
if ($variant->min_order != null && $variant->min_order != "" && $variant->min_order != 0) {
if ($variant->min_order > $qty) {
return response()->json(['status' => 0, 'message' => trans('messages.min_qty_message') . $variant->min_order, 'qty' => $request->qty], 200);
}
}
if ($variant->max_order != null && $variant->max_order != "" && $variant->max_order != 0) {
if ($variant->max_order < $qty) {
return response()->json(['status' => 0, 'message' => trans('messages.max_qty_message') . $variant->max_order, 'qty' => $request->qty - 1], 200);
}
}
if ($request->qty == $variant->qty) {
Cart::where('id', $request->id)->update(['qty' => $request->qty]);
return response()->json(['status' => 1, 'message' => trans('messages.qty_update_msg')], 200);
}
if ($variant->qty < $request->qty) {
return response()->json(['status' => 0, 'message' => trans('labels.out_of_stock_msg') . ' ' . $item->item_name . '(' . $variant->name . ')', 'qty' => $request->qty - 1], 200);
} else {
Cart::where('id', $request->id)->update(['qty' => $request->qty]);
return response()->json(['status' => 1, 'message' => trans('messages.qty_update_msg')], 200);
}
} else {
Cart::where('id', $request->id)->update(['qty' => $request->qty]);
return response()->json(['status' => 1, 'message' => trans('messages.qty_update_msg')], 200);
}
} elseif ($checkcart->variation_id == null) {
$item = Item::where('id', $checkcart->item_id)->first();
if (Auth::user() && Auth::user()->type == 2) {
$cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('item_id', $item->id)->where('id', '!=', $request->id)->where('user_id', Auth::user()->id)->first();
} else {
$cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('item_id', $item->id)->where('id', '!=', $request->id)->where('session_id', Session::getId())->first();
}
if ($cartqty->totalqty != null && $cartqty->totalqty != "") {
$qty = $cartqty->totalqty + $request->qty;
} else {
$qty = $request->qty;
}
if ($item->stock_management == 1) {
if ($item->min_order != null && $item->min_order != "" && $item->min_order != 0) {
if ($item->min_order > $qty) {
return response()->json(['status' => 0, 'message' => trans('messages.min_qty_message') . $item->min_order, 'qty' => $request->qty], 200);
}
}
if ($item->max_order != null && $item->max_order != "" && $item->max_order != 0) {
if ($item->max_order < $qty) {
return response()->json(['status' => 0, 'message' => trans('messages.max_qty_message') . $item->max_order, 'qty' => $request->qty - 1], 200);
}
}
if ($request->qty == $item->qty) {
Cart::where('id', $request->id)->update(['qty' => $request->qty]);
return response()->json(['status' => 1, 'message' => trans('messages.qty_update_msg')], 200);
}
if ($item->qty < $request->qty) {
return response()->json(['status' => 0, 'message' => trans('labels.out_of_stock_msg') . ' ' . $item->item_name, 'qty' => $request->qty - 1], 200);
} else {
Cart::where('id', $request->id)->update(['qty' => $request->qty]);
return response()->json(['status' => 1, 'message' => trans('messages.qty_update_msg')], 200);
}
} else {
Cart::where('id', $request->id)->update(['qty' => $request->qty]);
return response()->json(['status' => 1, 'message' => trans('messages.qty_update_msg')], 200);
}
}
} catch (\Throwable $th) {
return response()->json(['status' => 0, 'message' => trans('messages.wrong')], 200);
}
}
}