ultimatepos/app/Http/Controllers/Restaurant/KitchenController.php

150 lines
4.5 KiB
PHP

<?php
namespace App\Http\Controllers\Restaurant;
use App\TransactionSellLine;
use App\Utils\RestaurantUtil;
use App\Utils\Util;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
class KitchenController extends Controller
{
/**
* All Utils instance.
*/
protected $commonUtil;
protected $restUtil;
/**
* Constructor
*
* @param Util $commonUtil
* @param RestaurantUtil $restUtil
* @return void
*/
public function __construct(Util $commonUtil, RestaurantUtil $restUtil)
{
$this->commonUtil = $commonUtil;
$this->restUtil = $restUtil;
}
/**
* Display a listing of the resource.
*
* @return Response
*/
public function index()
{
// if (!auth()->user()->can('sell.view')) {
// abort(403, 'Unauthorized action.');
// }
$business_id = request()->session()->get('user.business_id');
$orders = $this->restUtil->getAllOrders($business_id, ['line_order_status' => 'received', 'is_kitchen_order' => 1]);
return view('restaurant.kitchen.index', compact('orders'));
}
/**
* Marks an order as cooked
*
* @return json $output
*/
public function markAsCooked($id)
{
// if (!auth()->user()->can('sell.update')) {
// abort(403, 'Unauthorized action.');
// }
try {
$business_id = request()->session()->get('user.business_id');
$sl = TransactionSellLine::leftJoin('transactions as t', 't.id', '=', 'transaction_sell_lines.transaction_id')
->where('t.business_id', $business_id)
->where('transaction_id', $id)
->where(function ($q) {
$q->whereNull('res_line_order_status')
->orWhere('res_line_order_status', 'received');
})
->update(['res_line_order_status' => 'cooked']);
$output = ['success' => 1,
'msg' => trans('restaurant.order_successfully_marked_cooked'),
];
} catch (\Exception $e) {
\Log::emergency('File:'.$e->getFile().'Line:'.$e->getLine().'Message:'.$e->getMessage());
$output = ['success' => 0,
'msg' => trans('messages.something_went_wrong'),
];
}
return $output;
}
/**
* Retrives fresh orders
*
* @return Json $output
*/
public function refreshOrdersList(Request $request)
{
// if (!auth()->user()->can('sell.view')) {
// abort(403, 'Unauthorized action.');
// }
$business_id = request()->session()->get('user.business_id');
$orders_for = $request->orders_for;
$filter = [];
$service_staff_id = request()->session()->get('user.id');
if (! $this->restUtil->is_service_staff($service_staff_id) && ! empty($request->input('service_staff_id'))) {
$service_staff_id = $request->input('service_staff_id');
}
if ($orders_for == 'kitchen') {
$filter['line_order_status'] = 'received';
$filter['is_kitchen_order'] = 1;
} elseif ($orders_for == 'waiter') {
$filter['waiter_id'] = $service_staff_id;
}
$orders = $this->restUtil->getAllOrders($business_id, $filter);
return view('restaurant.partials.show_orders', compact('orders', 'orders_for'));
}
/**
* Retrives fresh orders
*
* @return Json $output
*/
public function refreshLineOrdersList(Request $request)
{
// if (!auth()->user()->can('sell.view')) {
// abort(403, 'Unauthorized action.');
// }
$business_id = request()->session()->get('user.business_id');
$orders_for = $request->orders_for;
$filter = [];
$service_staff_id = request()->session()->get('user.id');
if (! $this->restUtil->is_service_staff($service_staff_id) && ! empty($request->input('service_staff_id'))) {
$service_staff_id = $request->input('service_staff_id');
}
if ($orders_for == 'kitchen') {
$filter['order_status'] = 'received';
} elseif ($orders_for == 'waiter') {
$filter['waiter_id'] = $service_staff_id;
}
$line_orders = $this->restUtil->getLineOrders($business_id, $filter);
return view('restaurant.partials.line_orders', compact('line_orders', 'orders_for'));
}
}