[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: OrderController.php
<?php namespace App\Http\Controllers\Vendor; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\CentralLogics\Helpers; use App\CentralLogics\OrderLogic; use App\Models\Order; use App\Models\Category; use App\Models\Food; use App\Models\OrderDetail; use App\Models\Admin; use App\Models\RestaurantWallet; use App\Models\AdminWallet; use App\Models\ItemCampaign; use App\Models\BusinessSetting; use Brian2694\Toastr\Facades\Toastr; use Illuminate\Support\Facades\DB; class OrderController extends Controller { public function list($status) { Order::where(['checked' => 0])->where('restaurant_id',\App\CentralLogics\Helpers::get_restaurant_id())->update(['checked' => 1]); $orders = Order::with(['customer']) ->when($status == 'searching_for_deliverymen', function($query){ return $query->SearchingForDeliveryman(); }) ->when($status == 'confirmed', function($query){ return $query->whereIn('order_status',['confirmed', 'accepted'])->whereNotNull('confirmed'); }) ->when($status == 'pending', function($query){ if(config('order_confirmation_model') == 'restaurant') { return $query->where('order_status','pending'); } return $query->where('order_status','pending')->where('order_type', 'take_away'); }) ->when($status == 'cooking', function($query){ return $query->where('order_status','processing'); }) ->when($status == 'food_on_the_way', function($query){ return $query->where('order_status','picked_up'); }) ->when($status == 'delivered', function($query){ return $query->Delivered(); }) ->when($status == 'ready_for_delivery', function($query){ return $query->where('order_status','handover'); }) ->when($status == 'refund_requested', function($query){ return $query->RefundRequest(); }) ->when($status == 'returned', function($query){ return $query->where('order_status','returned'); }) ->when($status == 'scheduled', function($query){ return $query->Scheduled()->where(function($q){ if(config('order_confirmation_model') == 'restaurant') { $q->whereNotIn('order_status',['failed','canceled', 'refund_requested', 'refunded']); } else { $q->whereNotIn('order_status',['pending','failed','canceled', 'refund_requested', 'refunded'])->orWhere(function($query){ $query->where('order_status','pending')->where('order_type', 'take_away'); }); } }); }) ->when($status == 'all', function($query){ return $query->where(function($q){ $q->whereNotIn('order_status',config('order_confirmation_model') == 'restaurant'?['failed','canceled', 'refund_requested', 'refunded']:['pending','failed','canceled', 'refund_requested', 'refunded'])->orWhere(function($query){ $query->where('order_status','pending')->where('order_type', 'take_away'); }); }); }) ->when(($status != 'scheduled' && $status != 'all'), function($query){ return $query->OrderScheduledIn(30); }) ->where('restaurant_id',\App\CentralLogics\Helpers::get_restaurant_id()) ->orderBy('schedule_at', 'desc') ->paginate(config('default_pagination')); $status = trans('messages.'.$status); return view('vendor-views.order.list', compact('orders', 'status')); } public function search(Request $request){ $key = explode(' ', $request['search']); $orders=Order::where(['restaurant_id'=>Helpers::get_restaurant_id()])->where(function ($q) use ($key) { foreach ($key as $value) { $q->orWhere('id', 'like', "%{$value}%") ->orWhere('order_status', 'like', "%{$value}%") ->orWhere('transaction_reference', 'like', "%{$value}%"); } })->get(); return response()->json([ 'view'=>view('vendor-views.order.partials._table',compact('orders'))->render() ]); } public function details(Request $request,$id) { $order = Order::with('details')->where(['id' => $id, 'restaurant_id' => Helpers::get_restaurant_id()])->first(); if (isset($order)) { return view('vendor-views.order.order-view', compact('order')); } else { Toastr::info('No more orders!'); return back(); } } public function status(Request $request) { $request->validate([ 'id' => 'required', 'order_status' => 'required|in:confirmed,processing,handover,delivered' ],[ 'id.required' => 'Order id is required!' ]); $order = Order::where(['id' => $request->id, 'restaurant_id' => Helpers::get_restaurant_id()])->first(); if($order->delivered != null) { Toastr::warning(trans('messages.cannot_change_status_after_delivered')); return back(); } if($request['order_status']=='delivered' && $order->order_type != 'take_away') { Toastr::warning(trans('messages.you_can_not_delivered_delivery_order')); return back(); } if($request['order_status'] =="confirmed" && config('order_confirmation_model') == 'deliveryman' && $order->order_type != 'take_away') { Toastr::warning(trans('messages.order_confirmation_warning')); return back(); } if ($request->order_status == 'delivered') { $order_delivery_verification = (boolean)\App\Models\BusinessSetting::where(['key' => 'order_delivery_verification'])->first()->value; if($order_delivery_verification) { if($request->otp) { if($request->otp != $order->otp) { Toastr::warning(trans('messages.order_varification_code_not_matched')); return back(); } } else { Toastr::warning(trans('messages.order_varification_code_is_required')); return back(); } } if($order->transaction == null) { $ol = OrderLogic::create_transaction($order,'restaurant', null); if(!$ol) { Toastr::warning(trans('messages.faield_to_create_order_transaction')); return back(); } } $order->payment_status = 'paid'; $order->details->each(function($item, $key){ if($item->food) { $item->food->increment('order_count'); } }); $order->customer->increment('order_count'); } $order->order_status = $request->order_status; $order[$request['order_status']] = now(); $order->save(); // $fcm_token = $order->customer->cm_firebase_token; // $value = Helpers::order_status_update_message($request->order_status); // try { // if ($value) { // $data = [ // 'title' =>trans('messages.order_placed_successfully'), // 'description' => $value, // 'order_id' => $order['id'], // 'image' => '', // 'type'=>'order_status' // ]; // Helpers::send_push_notif_to_device($fcm_token, $data); // DB::table('user_notifications')->insert([ // 'data'=> json_encode($data), // 'user_id'=>$order->customer->id, // 'created_at'=>now(), // 'updated_at'=>now() // ]); // } // if(in_array($request->order_status, ['processing', 'handover']) && $order->delivery_man) // { // $data = [ // 'title' =>trans('messages.order_placed_successfully'), // 'description' => $request->order_status=='processing'?trans('messages.Proceed_for_cooking'):trans('messages.ready_for_delivery'), // 'order_id' => $order['id'], // 'image' => '', // 'type'=>'order_status' // ]; // Helpers::send_push_notif_to_device($order->delivery_man->fcm_token, $data); // DB::table('user_notifications')->insert([ // 'data'=> json_encode($data), // 'delivery_man_id'=>$order->delivery_man->id, // 'created_at'=>now(), // 'updated_at'=>now() // ]); // } // } catch (\Exception $e) { // Toastr::warning(trans('messages.push_notification_faild')); // } if(!Helpers::send_order_notification($order)) { Toastr::warning(trans('messages.push_notification_faild')); } Toastr::success(trans('messages.order').' '.trans('messages.status_updated')); return back(); } public function update_shipping(Request $request, $id) { $request->validate([ 'contact_person_name' => 'required', 'address_type' => 'required', 'contact_person_number' => 'required', 'address' => 'required' ]); $address = [ 'contact_person_name' => $request->contact_person_name, 'contact_person_number' => $request->contact_person_number, 'address_type' => $request->address_type, 'address' => $request->address, 'longitude' => $request->longitude, 'latitude' => $request->latitude, 'created_at' => now(), 'updated_at' => now() ]; DB::table('customer_addresses')->where('id', $id)->update($address); Toastr::success('Delivery address updated!'); return back(); } public function generate_invoice($id) { $order = Order::where(['id' => $id, 'restaurant_id' => Helpers::get_restaurant_id()])->first(); return view('vendor-views.order.invoice', compact('order')); } public function add_payment_ref_code(Request $request, $id) { Order::where(['id' => $id, 'restaurant_id' => Helpers::get_restaurant_id()])->update([ 'transaction_reference' => $request['transaction_reference'] ]); Toastr::success('Payment reference code is added!'); return back(); } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: premium166.web-hosting.com
Server IP: 162.0.209.40
PHP Version: 8.1.34
Server Software: LiteSpeed
System: Linux premium166.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
HDD Total: 97.87 GB
HDD Free: 75.32 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
No
pkexec:
No
git:
Yes
User Info
Username: kataubyb
User ID (UID): 624
Group ID (GID): 625
Script Owner UID: 624
Current Dir Owner: 624