shell bypass 403

GrazzMean Shell

Uname: Linux peekpos.com 6.8.0-1060-aws #63~22.04.1-Ubuntu SMP Tue Jun 30 02:32:53 UTC 2026 x86_64
Software: Apache
PHP version: 8.3.25 [ PHP INFO ] PHP os: Linux
Server Ip: 47.130.192.226
Your Ip: 10.1.31.86
User: www (1001) | Group: www (1001)
Safe Mode: OFF
Disable Function:
passthru,putenv,chroot,chgrp,chown,shell_exec,popen,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv

name : CheckoutController.php
<?php

namespace App\Http\Controllers\front;

use App\Http\Controllers\Controller;
use App\Helpers\helper;
use App\Helpers\whatsapp_helper;
use Illuminate\Http\Request;
use App\Models\Address;
use App\Models\Cart;
use App\Models\Transaction;
use App\Models\Order;
use App\Models\OrderDetails;
use App\Models\User;
use App\Models\Payment;
use App\Models\Time;
use App\Models\Item;
use App\Models\About;
use App\Models\Variation;
use App\Models\CustomStatus;
use App\Models\Shipping;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use Stripe;
use Carbon\CarbonPeriod;
use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Exception;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Session;

class CheckoutController extends Controller
{
    public function index(Request $request)
    {
        session()->forget('last_url');
        if (session()->get('order_type') == 2) {
            session()->forget('addressdata');
        }

        if (Auth::user() && Auth::user()->type == 2) {
            $getaddresses = Address::select('id', 'user_id', 'address_type', 'address', 'title', 'landmark', 'postal_code', 'is_default')->where('user_id', Auth::user()->id)->orderbyDesc('id')->get();
            $getcartlist = Cart::where('user_id', Auth::user()->id)->where('buynow', $request->buynow)->orderByDesc('id')->get();
            if (helper::allpaymentcheckaddons()) {
                $getpaymentmethods = Payment::select('id', 'environment', 'payment_name', 'payment_type', 'currency', 'public_key', 'secret_key', 'encryption_key', 'image', 'payment_description', 'unique_identifier')->where('is_available', 1)->where('is_activate', '1')->orderBy('reorder_id')->get();
            } else {
                $getpaymentmethods = Payment::select('id', 'environment', 'payment_name', 'payment_type', 'currency', 'public_key', 'secret_key', 'encryption_key', 'image', 'payment_description', 'unique_identifier')->where('is_available', 1)->where('is_activate', '1')->where('payment_type', '!=', '2')->orderBy('reorder_id')->get();
            }
        } else {
            $getaddresses = array();
            $getcartlist = Cart::where('session_id', Session::getId())->where('buynow', $request->buynow)->orderByDesc('id')->get();
            $getpaymentmethods = Payment::select('id', 'environment', 'payment_name', 'payment_type', 'currency', 'public_key', 'secret_key', 'encryption_key', 'image', 'payment_description', 'unique_identifier')->where('is_available', 1)->where('is_activate', '1')->where('payment_type', '!=', '2')->orderBy('reorder_id')->get();
        }
        //  product count tax
        $itemtaxes = [];
        $producttax = 0;
        $tax_name = [];
        $tax_price = [];
        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;
        $getsettings = About::first();
        $allshippingarea = Shipping::where('is_available', 1)->orderBy('reorder_id')->get();
        if (count($getcartlist) > 0) {
            return view('web.checkout.checkout', compact('getaddresses', 'getpaymentmethods', 'getcartlist', 'taxArr', 'getsettings', 'allshippingarea'));
        } else {
            return redirect()->back();
        }
    }
    public function isopenclose(Request $request)
    {
        if ($request->buynow == null || $request->buynow == 0) {
            $buynow = 0;
        } else {
            $buynow = 1;
        }
        try {
            if (@helper::appdata()->timezone != "") {
                date_default_timezone_set(helper::appdata()->timezone);
            }
            $admin = User::first();
            if ($admin->is_online == 1) {

                if (Auth::user() && Auth::user()->type == 2) {
                    $cartdata = Cart::where('user_id', Auth::user()->id)->where('buynow', $buynow)->get();
                } else {
                    $cartdata = Cart::where('session_id', Session::getId())->where('buynow', $buynow)->get();
                }

                if ($request->qty > helper::appdata()->max_order_qty) {

                    $msg = trans('messages.order_qty_less_then') . ' : ' . helper::appdata()->max_order_qty;
                    return response()->json(['status' => 2, 'message' => $msg], 200);
                } elseif (count($cartdata) <= 0) {

                    return response()->json(['status' => 2, 'message' => trans('messages.cart_is_empty')], 200);
                } elseif ($request->order_amount < helper::appdata()->min_order_amount || $request->order_amount > helper::appdata()->max_order_amount) {

                    $msg = trans('messages.order_amount_must_between') . ' ' . helper::currency_format(helper::appdata()->min_order_amount) . ' and ' . helper::currency_format(helper::appdata()->max_order_amount);
                    return response()->json(['status' => 2, 'message' => $msg], 200);
                } else {
                    if (helper::checkaddons('customer_login')) {
                        $getsetting = About::first();
                        if ($getsetting->login_required == 1) {
                            if ($getsetting->is_checkout_login_required == 1) {
                                if (Auth::user() &&  Auth::user()->type == 2) {
                                    return response()->json(['status' => 3, 'message' => trans('messages.success')], 200);
                                } else {
                                    return response()->json(['status' => 4, 'message' => trans('messages.success')], 200);
                                }
                            } else {
                                if (Auth::user() &&  Auth::user()->type == 2) {
                                    return response()->json(['status' => 3, 'message' => trans('messages.success')], 200);
                                } else {
                                    return response()->json(['status' => 1, 'message' => trans('messages.success')], 200);
                                }
                            }
                        } else {
                            return response()->json(['status' => 3, 'message' => trans('messages.success')], 200);
                        }
                    } else {
                        return response()->json(['status' => 3, 'message' => trans('messages.success')], 200);
                    }
                }
            } else {
                return response()->json(['status' => 0, 'message' => trans('messages.restaurant_closed')], 200);
            }
        } catch (\Throwable $th) {
        }
    }
    public function placeorder(Request $request)
    {
        try {
            if (in_array($request->transaction_type, [1, 2, 3, 4, 5, 6, 16])) {
                if ($request->transaction_type == 16) {
                    $address = $request->modal_address;
                    $address_type = $request->modal_address_type;
                    $landmark = $request->modal_landmark;
                    $postal_code = $request->modal_pincode;
                    $city = $request->modal_city;
                    $state = $request->modal_state;
                    $country = $request->modal_country;
                    $delivery_charge = $request->modal_delivery_charge;
                    $name = $request->modal_customer_name;
                    $email = $request->modal_customer_email;
                    $mobile = $request->modal_customer_mobile;
                    $order_type = $request->modal_order_type;
                    $transaction_type = $request->transaction_type;
                    $grand_total = $request->modal_grand_total - $request->modal_tips;
                    $tax = $request->modal_tax;
                    $tax_name = $request->modal_tax_name;
                    $order_notes = $request->modal_message;
                    $tips = $request->modal_tips;
                    $delivery_date = $request->modal_delivery_date;
                    $delivery_time = $request->modal_delivery_time;
                    $shipping_area = $request->modal_shipping_area;
                    $buynow = $request->modal_buynow;
                } else {
                    $address = $request->address;
                    $address_type = $request->address_type;
                    $landmark = $request->landmark;
                    $postal_code = $request->pincode;
                    $delivery_charge = $request->delivery_charge;
                    $name = $request->name;
                    $email = $request->email;
                    $mobile = $request->mobile;
                    $order_type = $request->order_type;
                    $transaction_type = $request->transaction_type;
                    $grand_total = $request->grand_total - $request->tips;
                    $tax = $request->tax;
                    $tax_name = $request->tax_name;
                    $order_notes = $request->order_notes;
                    $transaction_id = $request->transaction_id;
                    $country = $request->country;
                    $city = $request->city;
                    $state = $request->state;
                    $buynow = $request->buynow;
                    $delivery_date = $request->delivery_date;
                    $delivery_time = $request->delivery_time;
                    $shipping_area = $request->shipping_area;
                    $tips = $request->tips;
                }
            } else {
                $userdata = Session::get('userdata');
                $address = $userdata['address'];
                $address_type = $userdata['address_type'];
                $delivery_charge = $userdata['delivery_charge'];
                $name = $userdata['name'];
                $email = $userdata['email'];
                $mobile = $userdata['mobile'];
                $order_type = $userdata['order_type'];
                $transaction_type = $userdata['transaction_type'];
                $grand_total = $userdata['grand_total'] - $userdata['tips'];
                $tax_name = $userdata['tax_name'];
                $tax = $userdata['tax'];
                $order_notes = $userdata['order_notes'];
                $landmark = $userdata['landmark'];
                $postal_code = $userdata['pincode'];
                if ($request->paymentId == null) {
                    $transaction_id = session()->get('payment_id');
                } else {
                    $transaction_id = $request->paymentId;
                }

                $country = $userdata['country'];
                $state = $userdata['state'];
                $city = $userdata['city'];
                $buynow = $userdata['buynow'];
                $delivery_date = $userdata['delivery_date'];
                $delivery_time = $userdata['delivery_time'];
                $shipping_area = $userdata['shipping_area'];
                $tips = $userdata['tips'];
            }

            date_default_timezone_set(helper::appdata()->timezone);

            if (Auth::user() && Auth::user()->type == 2) {
                $cartdata = Cart::where('user_id', Auth::user()->id)->where('buynow', $buynow)->get();
            } else {
                $cartdata = Cart::where('session_id', Session::getId())->where('buynow', $buynow)->get();
            }

            if (count($cartdata) <= 0) {
                if ($transaction_type == 7 || $transaction_type == 8 || $transaction_type == 9 || $transaction_type == 10 || $transaction_type == 11 || $transaction_type == 12 || $transaction_type == 13 || $transaction_type == 14 || $transaction_type == 15 || $transaction_type == 16) {
                    return redirect()->back()->with('error', trans('messages.cart_is_empty'));
                } else {
                    return response()->json(['status' => 0, 'message' => trans('messages.cart_is_empty')], 200);
                }
            }
            // to manage item quantity with-variation & without-variation

            foreach ($cartdata as $cart) {

                if ($cart->variation_id != "" && $cart->variation_id != null) {
                    if (Auth::user() && Auth::user()->type == 2) {
                        $cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('variation_id', $cart->variation_id)->where('buynow', $buynow)->where('user_id', Auth::user()->id)->first();
                    } else {
                        $cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('variation_id', $cart->variation_id)->where('buynow', $buynow)->where('session_id', Session::getId())->first();
                    }

                    $variant = Variation::where('id', $cart->variation_id)->first();

                    $item_name = Item::select('item_name')->where('id', $cart->item_id)->first();
                    if ($variant->stock_management == 1) {

                        if ($variant->min_order != null && $variant->min_order != ""  && $variant->min_order != 0) {
                            if ($cartqty->totalqty < $variant->min_order) {
                                if ($transaction_type == 7 || $transaction_type == 8 || $transaction_type == 9 || $transaction_type == 10 || $transaction_type == 11 || $transaction_type == 12 || $transaction_type == 13 || $transaction_type == 14) {
                                    return redirect()->back()->with('error', trans('messages.min_qty_message') . $variant->min_order . " " . ($item_name->item_name));
                                } else {
                                    return response()->json(['status' => 0, 'message' => trans('messages.min_qty_message') . $variant->min_order . " " . ($item_name->item_name)], 200);
                                }
                            }
                        }
                        if ($variant->max_order != null && $variant->max_order != "" && $variant->max_order != 0) {
                            if ($variant->max_order < $cartqty->totalqty) {
                                if ($transaction_type == 7 || $transaction_type == 8 || $transaction_type == 9 || $transaction_type == 10 || $transaction_type == 11 || $transaction_type == 12 || $transaction_type == 13 || $transaction_type == 14) {
                                    return redirect()->back()->with('error', trans('messages.max_qty_message') . $variant->max_order . " " . ($item_name->item_name));
                                } else {
                                    return response()->json(['status' => 0, 'message' => trans('messages.max_qty_message') . $variant->max_order . " " . ($item_name->item_name)], 200);
                                }
                            }
                        }
                        if ($cart->qty > $variant->qty) {
                            if ($transaction_type == 7 || $transaction_type == 8 || $transaction_type == 9 || $transaction_type == 10 || $transaction_type == 11 || $transaction_type == 12 || $transaction_type == 13 || $transaction_type == 14) {
                                return redirect()->back()->with('error', trans('messages.cart_qty_msg') . ' ' . trans('labels.out_of_stock_msg') . ' ' . $item_name->item_name . '(' . $variant->name . ')');
                            } else {
                                return response()->json(['status' => 0, 'message' => trans('messages.cart_qty_msg') . ' ' . trans('labels.out_of_stock_msg') . ' ' . $item_name->item_name . '(' . $variant->name . ')'], 200);
                            }
                        }
                    }
                } else {

                    $item = Item::where('id', $cart->item_id)->first();
                    if (Auth::user() && Auth::user()->type == 2) {
                        $cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('item_id', $cart->item_id)->where('buynow', $buynow)->where('user_id', Auth::user()->id)->first();
                    } else {
                        $cartqty = Cart::select(DB::raw("SUM(qty) as totalqty"))->where('item_id', $cart->item_id)->where('buynow', $buynow)->where('session_id', Session::getId())->first();
                    }

                    if ($item->stock_management == 1) {
                        if ($item->min_order != null && $item->min_order != ""  && $item->min_order != 0) {
                            if ($cartqty->totalqty < $item->min_order) {
                                if ($transaction_type == 7 || $transaction_type == 8 || $transaction_type == 9 || $transaction_type == 10 || $transaction_type == 11 || $transaction_type == 12 || $transaction_type == 13 || $transaction_type == 14) {
                                    return redirect()->back()->with('error', trans('messages.min_qty_message') . $item->min_order . ' ' . ($item->item_name));
                                } else {
                                    return response()->json(['status' => 0, 'message' => trans('messages.min_qty_message') . $item->min_order . ' ' . ($item->item_name)], 200);
                                }
                            }
                        }

                        if ($item->max_order != null && $item->max_order != "" && $item->max_order != 0) {
                            if ($item->max_order < $cartqty->totalqty) {
                                if ($transaction_type == 7 || $transaction_type == 8 || $transaction_type == 9 || $transaction_type == 10 || $transaction_type == 11 || $transaction_type == 12 || $transaction_type == 13 || $transaction_type == 14) {
                                    return redirect()->back()->with('error', trans('messages.max_qty_message') . $item->max_order . ' ' . ($item->item_name));
                                } else {
                                    return response()->json(['status' => 0, 'message' => trans('messages.max_qty_message') . $item->max_order . ' ' . ($item->item_name)], 200);
                                }
                            }
                        }
                        if ($cart->qty > $item->qty) {
                            if ($transaction_type == 7 || $transaction_type == 8 || $transaction_type == 9 || $transaction_type == 10 || $transaction_type == 11 || $transaction_type == 12 || $transaction_type == 13 || $transaction_type == 14) {
                                return redirect()->back()->with('error', trans('messages.cart_qty_msg') . ' ' . trans('labels.out_of_stock_msg') . ' ' . $item->item_name);
                            } else {
                                return response()->json(['status' => 0, 'message' => trans('messages.cart_qty_msg') . ' ' . trans('labels.out_of_stock_msg') . ' ' . $item->item_name], 200);
                            }
                        }
                    }
                }
            }

            if ($order_type == "") {
                return response()->json(['status' => 0, 'message' => trans('messages.order_type_required')], 200);
            }
            if ($transaction_type == "") {
                return response()->json(['status' => 0, 'message' => trans('messages.transaction_type_required')], 200);
            }
            if ($transaction_type != 1 && $transaction_type != 2 && $transaction_type != 4 && $transaction_type != 16) {
                if ($transaction_id == "") {
                    return response()->json(['status' => 0, 'message' => trans('messages.transaction_id_required')], 200);
                }
                $transaction_id = $transaction_id;
            }


            if (Auth::user() && Auth::user()->type == 2) {
                $checkuser = User::where('is_available', 1)->where('id', Auth::user()->id)->first();
                if ($transaction_type == 2) {
                    if ($checkuser->wallet == "" || ($checkuser->wallet < $grand_total)) {
                        return response()->json(['status' => 0, 'message' => trans('messages.insufficient_wallet')], 200);
                    }
                }
            }

            $defaultsatus = CustomStatus::where('type', 1)->where('order_type', $order_type)->where('is_available', 1)->where('is_deleted', 2)->first();
            if (empty($defaultsatus) && $defaultsatus == null) {
                if ($transaction_type == 7 || $transaction_type == 8 || $transaction_type == 9 || $transaction_type == 10 || $transaction_type == 11 || $transaction_type == 12 || $transaction_type == 13 || $transaction_type == 14 || $transaction_type == 15 || $transaction_type == 16) {
                    return redirect()->back()->with('error', trans('order not placed without default status !!'));
                } else {
                    return response()->json(['status' => 0, 'message' => trans('order not placed without default status !!')], 200);
                }
            }

            if ($transaction_type == 4) {

                try {
                    $stripekey = helper::stripe_data()->secret_key;

                    Stripe\Stripe::setApiKey($stripekey);
                    $token = $transaction_id;

                    $charge = Stripe\Charge::create([
                        'amount' => $grand_total * 100,
                        'currency' => helper::stripe_data()->currency,
                        "description" => "SingleGrocery-OrderPayment",
                        'source' => $token,
                    ]);
                    $transaction_id = $charge->id;
                } catch (Exception $e) {

                    return response()->json(['status' => 0, 'message' => trans('messages.unable_to_complete_payment')], 200);
                }
            }

            $getordernumber = Order::select('order_number', 'order_number_digit', 'order_number_start')->orderBy('id', 'DESC')->first();

            if (empty($getordernumber->order_number_digit)) {
                $n = helper::appdata()->order_number_start;
                $newbooking_number = str_pad($n, 0, STR_PAD_LEFT);
            } else {
                if ($getordernumber->order_number_start == helper::appdata()->order_number_start) {
                    $n = (int)($getordernumber->order_number_digit);
                    $newbooking_number = str_pad($n + 1, 0, STR_PAD_LEFT);
                } else {
                    $n = helper::appdata()->order_number_start;
                    $newbooking_number = str_pad($n, 0, STR_PAD_LEFT);
                }
            }
            $order = new Order;
            $order_number = helper::appdata()->order_prefix . $newbooking_number;

            $order->order_number = $order_number;
            $order->order_number_digit = $newbooking_number;
            $order->order_number_start = helper::appdata()->order_number_start;
            $order->user_id = @$checkuser->id;
            $order->order_type = $order_type;

            if ($order_type == 1) {
                $order->address_type = $address_type;
                $order->address = $address;
                $order->landmark = $landmark;
                $order->postal_code = $postal_code;
                $order->country = $country;
                $order->state = $state;
                $order->city = $city;
            } else {
                $order->address_type = null;
                $order->address = null;
                $order->landmark = null;
                $order->postal_code = null;
                $order->country = null;
                $order->state = null;
                $order->city = null;
            }

            $order->name = $name;
            $order->email = $email;
            $order->mobile = $mobile;
            if (session()->has('discount_data')) {
                $order->offer_code = session()->get('discount_data')['offer_code'];
                $order->discount_amount = helper::number_format(session()->get('discount_data')['offer_amount']);
            } else {
                $order->offer_code = "";
                $order->discount_amount = helper::number_format(0);
            }
            $order->transaction_type = $transaction_type;
            if ($transaction_type != 1 && $transaction_type != 2 && $transaction_type != 16) {
                $order->transaction_id = $transaction_id;
            }
            $order->tax_amount = $tax;
            $order->tax_name = $tax_name;
            $order->delivery_charge = helper::number_format($delivery_charge);
            $order->grand_total = helper::number_format($grand_total);
            $order->order_notes = $order_notes;
            $order->order_from = "web";
            $order->status = $defaultsatus->id;
            $order->status_type = $defaultsatus->type;
            $order->delivery_date = $delivery_date;
            $order->delivery_time = $delivery_time;
            $order->shipping_area = $shipping_area;
            $order->tips = $tips;

            if ($transaction_type == '16') {
                if ($request->hasFile('screenshot')) {
                    $filename = 'screenshot-' . uniqid() . "." . $request->file('screenshot')->getClientOriginalExtension();
                    $request->file('screenshot')->move(env('ASSETSPATHURL') . 'admin-assets/images/screenshot/', $filename);
                }
                $order->screenshot = $filename;
            }
            if ($transaction_type  == 1 || $transaction_type  == 16) {
                $order->payment_status = 1;
            } else {
                $order->payment_status = 2;
            }

            if ($order->save()) {
                if ($transaction_type == 2) {
                    $checkuser->wallet = $checkuser->wallet - $grand_total + $tips;
                    $transaction = new Transaction();
                    $transaction->user_id = @$checkuser->id;
                    $transaction->order_id = $order->id;
                    $transaction->order_number = $order_number;
                    $transaction->transaction_id = $transaction_id;
                    $transaction->transaction_type = 1;
                    $transaction->amount = helper::number_format($grand_total);
                    $transaction->tips = helper::number_format($tips);
                    if ($transaction->save()) {
                        $checkuser->save();
                    }
                }
                if (Auth::user() && Auth::user()->type == 2) {
                    $cartdata = Cart::where('user_id', $checkuser->id)->where('buynow', $buynow)->get();
                } else {
                    $cartdata = Cart::where('session_id', Session::getId())->where('buynow', $buynow)->get();
                }

                foreach ($cartdata as $cart) {
                    $od = new OrderDetails();
                    $od->order_id = $order->id;
                    $od->user_id = @$checkuser->id;
                    $od->item_id = $cart->item_id;
                    $od->item_name = $cart->item_name;
                    $od->item_type = $cart->item_type;
                    $od->item_image = $cart->item_image;
                    $od->tax = $cart->tax;
                    $od->qty = $cart->qty;
                    $od->item_price = $cart->item_price;
                    $od->variation_id = $cart->variation_id;
                    $od->variation = $cart->variation;
                    $od->variation_price = $cart->variation_price;
                    $od->extras_id = $cart->extras_id;
                    $od->extras_name = $cart->extras_name;
                    $od->extras_price = $cart->extras_price;
                    $od->save();
                }

                // to manage item quantity with-variation & without-variation
                foreach ($cartdata as $cart) {
                    $iteminfo = Item::find($cart->item_id);
                    if ($iteminfo->has_variation == 1) {
                        $variationinfo = Variation::find($cart->variation_id);
                        $variationinfo->qty -= (int)($cart->qty);
                        $variationinfo->save();
                        $variation_available_qty = $variationinfo->qty;
                        $variation_cartdata = Cart::where('variation_id', $cart->variation_id)->where('buynow', $buynow)->get();
                        if ($variation_available_qty == 0) {
                            Cart::where('variation_id', $cart->variation_id)->where('id', '!=', $cart->id)->where('buynow', $buynow)->delete();
                        } else {
                            foreach ($variation_cartdata as $variation_cart) {
                                if ($variation_cart->qty > $variation_available_qty) {
                                    $variation_cart->qty = $variation_available_qty;
                                    $variation_cart->save();
                                }
                            }
                        }
                    } else {
                        $iteminfo->qty = $cart->qty;
                        $iteminfo->save();
                        $item_available_qty = $iteminfo->qty;
                        $item_cartdata = Cart::where('item_id', $cart->item_id)->where('buynow', $buynow)->get();
                        if ($item_available_qty == 0) {
                            Cart::where('item_id', $cart->item_id)->where('id', '!=', $cart->id)->where('buynow', $buynow)->delete();
                        } else {
                            foreach ($item_cartdata as $item_cart) {
                                if ($item_cart->qty > $item_available_qty) {
                                    $item_cart->qty = $item_available_qty;
                                    $item_cart->save();
                                }
                            }
                        }
                    }
                }
                $emaildata = helper::emailconfigration();
                Config::set('mail', $emaildata);
                if (Auth::user() && Auth::user()->type == 2) {
                    Cart::where('user_id', $checkuser->id)->where('buynow', $buynow)->delete();
                    if ($checkuser->is_notification == 1) {
                        $title = trans('labels.order_placed');
                        $body = "Your Order " . $order_number . " has been placed.";
                        $noti = helper::push_notification($checkuser->token, $title, $body, "order", $order->id);
                    }
                    $orderdata = Order::where('id', $order->id)->first();
                    if ($checkuser->is_mail == 1) {
                        $invoice_helper = helper::create_order_invoice($checkuser->email, $checkuser->name, $order_number, $orderdata);
                    }
                } else {
                    Cart::where('session_id', Session::getId())->where('buynow', $buynow)->delete();

                    $title = trans('labels.order_placed');
                    $body = "Your Order " . $order_number . " has been placed.";
                    $noti = helper::push_notification(125, $title, $body, "order", $order->id);

                    $orderdata = Order::where('id', $order->id)->first();
                    helper::create_order_invoice($email, $name, $order_number, $orderdata);
                }

                session()->forget('discount_data');
                session()->forget('userdata');
                session()->forget('payment_type');
                if ($transaction_type == 7 || $transaction_type == 8 || $transaction_type == 9 || $transaction_type == 10 || $transaction_type == 11 || $transaction_type == 12 || $transaction_type == 13 || $transaction_type == 14 || $transaction_type == 15 || $transaction_type == 16) {
                    return redirect('/success-' . $order_number)->with('success', trans('messages.order_placed_note'));
                }
                if (@helper::checkaddons('whatsapp_message')) {
                    if (whatsapp_helper::whatsapp_message_config()->order_created == 1) {
                        whatsapp_helper::whatsappmessage($order_number);
                    }
                }

                return response()->json(['status' => 1, 'message' => trans('messages.success'), 'order_id' => $order_number], 200);
            } else {
                return response()->json(['status' => 0, 'message' => trans('messages.wrong')], 200);
            }
        } catch (\Throwable $th) {
            dd($th);
            return response()->json(['status' => 0, 'message' => trans('messages.wrong')], 200);
        }
    }
    public function paymentsuccess(Request $request)
    {
        try {
            if ($request->has('paymentId')) {
                $paymentId = request('paymentId');
                $response = ['status' => '1', 'msg' => 'paid', 'paymentId' => $paymentId];
            }

            if ($request->has('payment_id')) {
                $payment_id = request('payment_id');
                $response = ['status' => '1', 'msg' => 'paid', 'paymentId' => $payment_id];
            }

            if ($request->has('transaction_id')) {
                $payment_id = request('transaction_id');
                $response = ['status' => '1', 'msg' => 'paid', 'paymentId' => $payment_id];
            }

            if (Session::get('payment_type') == "11") {
                $checkstatus = app('App\Http\Controllers\addons\PayTabController')->checkpaymentstatus(Session::get('tran_ref'));

                if ($checkstatus == "A") {
                    $payment_id = Session::get('tran_ref');
                    $response = ['status' => '1', 'msg' => 'paid', 'paymentId' => $payment_id];
                } else {
                    return redirect('/checkout?buynow=' . Session::get('userdata')['buynow'])->with('error', trans('messages.unable_to_complete_payment'));
                }
            }

            if (Session::get('payment_type') == "12") {
                if ($request->code == "PAYMENT_SUCCESS") {
                    $payment_id = $request->transactionId;
                    $response = ['status' => 1, 'msg' => 'paid', 'paymentId' => $payment_id];
                } else {
                    return redirect(Session::get('failureurl'))->with('error', trans('messages.unable_to_complete_payment'));
                }
            }

            if (Session::get('payment_type') == "13") {
                $checkstatus = app('App\Http\Controllers\addons\MollieController')->checkpaymentstatus(Session::get('tran_ref'));

                if ($checkstatus == "A") {
                    $payment_id = Session::get('tran_ref');
                    $response = ['status' => 1, 'msg' => 'paid', 'paymentId' => $payment_id];
                } else {
                    return redirect('/checkout?buynow=' . Session::get('userdata')['buynow'])->with('error', trans('messages.unable_to_complete_payment'));
                }
            }

            if (Session::get('payment_type') == "14") {

                if ($request->status == "Completed") {
                    $payment_id = $request->transaction_id;
                    $response = ['status' => 1, 'msg' => 'paid', 'paymentId' => $payment_id];
                } else {
                    return redirect('/checkout?buynow=' . Session::get('userdata')['buynow'])->with('error', trans('messages.unable_to_complete_payment'));
                }
            }

            if (Session::get('payment_type') == "15") {
                $checkstatus = app('App\Http\Controllers\addons\XenditController')->checkpaymentstatus(Session::get('tran_ref'));
                if ($checkstatus == "PAID") {
                    $paymentId = session()->get('payment_id');
                    $response = ['status' => 1, 'msg' => 'paid', 'paymentId' => $paymentId];
                } else {
                    return redirect('/checkout?buynow=' . Session::get('userdata')['buynow'])->with('error', trans('messages.unable_to_complete_payment'));
                }
            }
        } catch (\Throwable $th) {
            dd($th);
        }
        $request = new Request($response);

        return $this->placeorder($request);
    }

    public function timeslot(Request $request)
    {
        try {

            $timezone = helper::appdata();

            $slots = [];
            date_default_timezone_set($timezone->timezone);

            if ($request->inputDate != "" || $request->inputDate != null) {
                $day = date('l', strtotime($request->inputDate));

                $minute = "";
                $time = Time::where('day', $day)->first();

                if ($time->always_close == 1) {
                    $slots = "1";
                } else {
                    if (helper::appdata()->interval_type == 2) {
                        $minute = (float)helper::appdata()->interval_time * 60;
                    }
                    if (helper::appdata()->interval_type == 1) {
                        $minute = helper::appdata()->interval_time;
                    }

                    $firsthalf = new CarbonPeriod(date("H:i", strtotime($time->open_time)), $minute . ' minutes', date("H:i", strtotime($time->break_start))); // for create use 24 hours format later change format 

                    $secondhalf =  new CarbonPeriod(date("H:i", strtotime($time->break_end)), $minute . ' minutes', date("H:i", strtotime($time->close_time)));

                    if (helper::appdata()->time_format == 1) {

                        foreach ($firsthalf as $item) {

                            $starttime[] = $item->format("H:i");
                        }
                        foreach ($secondhalf as $item) {
                            $endtime[] = $item->format("H:i");
                        }
                    } else {
                        foreach ($firsthalf as $item) {
                            $starttime[] = $item->format("h:i A");
                        }
                        foreach ($secondhalf as $item) {
                            $endtime[] = $item->format("h:i A");
                        }
                    }

                    for ($i = 0; $i < count($starttime) - 1; $i++) {
                        $temparray[] = $starttime[$i] . ' ' . '-' . ' ' . next($starttime);
                    }
                    for ($i = 0; $i < count($endtime) - 1; $i++) {
                        $temparray[] = $endtime[$i] . ' ' . '-' . ' ' . next($endtime);
                    }
                    $currenttime = Carbon::now()->format('H:i');
                    $current_date = helper::date_format(Carbon::now());

                    foreach ($temparray as $item) {
                        $ordercount = Order::where('delivery_date', $request->inputDate)->where('delivery_time', $item)->count();
                        if ($ordercount < helper::appdata()->perslot_booking_limit) {
                            $slot_parts = explode(' - ', $item);
                            if ($request->inputDate === $current_date) {
                                if ($currenttime < date('H:i', strtotime($slot_parts[1]))) {
                                    $slots[] = array(
                                        'slot' => $item,
                                    );
                                }
                            } else {
                                $slots[] = array(
                                    'slot' => $item,
                                );
                            }
                        }
                    }
                }
            }
            return $slots;
        } catch (\Throwable $th) {

            return response()->json(['status' => 0, 'message' => trans('messages.wrong')], 200);
        }
    }
}
© 2026 GrazzMean