Viewing File: /home/ubuntu/shop-website-base/app/Http/Controllers/Admin/OrderController.php
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Helpers\Helper, App\Helpers\EnvEditorHelper;
use DB, Hash, Exception, File, Setting, Validator;
use App\Models\User, App\Models\Settings,App\Models\Category,App\Models\Order,App\Models\OrderProduct,App\Models\OrderPayment;
use App\Jobs\SendEmailJob;
class OrderController extends Controller {
/**
* Create a new controller instance.
*
* @return void
*/
protected $paginate_count;
public function __construct() {
$this->middleware('auth:admin');
$this->paginate_count = 10;
}
/**
* @method orders_index
*
* @uses Display list of orders
*
* @created Ganesh
*
* @updated
*
* @param object $request - Order Id
*
* @return response success/failure message
*
**/
public function orders_index(Request $request) {
$base_query = Order::orderBy('updated_at','desc');
if($request->search_key) {
$search_key = $request->search_key;
$base_query = $base_query
->whereHas('user',function($query) use($search_key) {
return $query->where('users.name','LIKE','%'.$search_key.'%');
})->orWhere(function ($query) use ($request) {
$query->where('orders.unique_id', "like", "%" . $request->search_key . "%");
});
}
if($request->status){
$base_query->where('status',$request->status);
}
if($request->product_id) {
$product_id = $request->product_id;
$base_query = $base_query
->whereHas('order_products',function($query) use($product_id) {
return $query->where('order_products.product_id',$product_id);
});
}
$orders = $base_query->paginate($this->paginate_count);
$order_status = [ORDER_PLACED,ORDER_STARTED_FROM_LOCATION,ORDER_DELIVERED];
return view('admin.orders.index')
->with('page','orders_list')
->with('orders',$orders)
->with('order_status',$order_status);
}
/**
* @method orders_view
*
* @uses Display the specified order details
*
* @created Sakthi
*
* @updated
*
* @param object $request - Order Id
*
* @return response success/failure message
*
**/
public function orders_view(Request $request) {
try {
$order = Order::where('id',$request->order_id)->first();
if(!$order) {
throw new Exception(tr('order_not_found'), 1);
}
$order_products = OrderProduct::where('order_id',$order->id)->orderBy('created_at','desc')->get();
$order_payments = OrderPayment::where('order_id',$order->id)->first();
return view('admin.orders.view')
->with('page','orders_list')
->with('order',$order)
->with('order_products',$order_products)
->with('order_payments',$order_payments);
} catch(Exception $e) {
return redirect()->back()->with('flash_error',$e->getMessage());
}
}
/**
* @method orders_save
*
* @uses Update status of order
*
* @created Sakthi
*
* @updated
*
* @param object $request - Order Id
*
* @return response success/failure message
*
**/
public function orders_save(Request $request) {
try {
$order = Order::find($request->order_id);
if(!$order) {
throw new Exception(tr('order_not_found'), 1);
}
$order->status = $request->status;
if($order->save()) {
DB::commit();
$user = User::find($order->user_id);
$email_data['subject'] = Setting::get('site_name').' '.tr('order_status').' '.mail_order_status_formatted($order->status);
$email_data['page'] = "emails.users.order-status";
$email_data['data'] = $user;
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['message'] = tr('order_status').' '.mail_order_status_formatted($order->status).'!!';
$email_data['order'] = $order;
$email_data['order_products'] = OrderProduct::where('order_id',$order->order_id)->get() ?? [];
$this->dispatch(new \App\Jobs\SendEmailJob($email_data));
return redirect(route('admin.orders.view', ['order_id' => $order->id]))->with('flash_success', tr('order_status_updated_successfully'));
}
throw new Exception(tr('order_status_update_failed'));
} catch(Exception $e){
DB::rollback();
return redirect()->back()->withInput()->with('flash_error', $e->getMessage());
}
}
}
Back to Directory
File Manager