Files
admin-php-module/commands/GETRoomMap.php
miroman-afk c4dc6e02a0 v.2.30
Добавлен расширенный отчет по реализации
Добавлен монитор активности
2023-08-03 11:05:15 +03:00

822 lines
53 KiB
PHP

<?php
namespace App\Commands;
use App\Component\Models\Client;
use App\Component\Models\Places;
use App\Component\Models\Settings;
use App\Component\Models\ShiftOnlineActions;
use App\Component\Models\ShiftOnlineDeleted;
use App\Component\Models\ShiftOnlineItems;
use App\Component\Models\ShiftOnlineOrders;
use App\Component\Models\Staff;
use App\Component\Models\Tables;
use App\Console\Commands\HRCCommand;
use App\Console\Commands\HRCCommandInterface;
use Illuminate\Support\Facades\Log;
class GETRoomMap extends HRCCommand implements HRCCommandInterface
{
protected $signature = 'getroommap';
public function command($input, $output = null)
{
if (isset($input['method'])) {
$method = $input['method'];
if ($method == 'statistic') {
if (isset($input['type'])) {
$type = $input['type'];
if ($type == 'place') {
if (isset($input['place_id'])) {
$place_id = $input['place_id'];
$places = Places::find($place_id);
$closed_orders_count = $closed_orders_sum = $closed_orders_client_count = 0;
if (isset($input['table_id'])) {
$table_id = $input['table_id'];
$orders = ShiftOnlineOrders::where('place_name', $places->name)
->where('table_name', strval($table_id))
->where('who_open', '>', 0)
->where('full_sum', '>=', 0)
->get();
$cancellations_count = $cancellations_sum = 0;
$waited_count = $waited_sum = 0;
$closed_count = $closed_sum = 0;
$deleted_count = $deleted_sum = 0;
$returned_count = $returned_sum = 0;
$orders_info = [];
$place_name = Places::getName($place_id);
$setting = Settings::getValue(10);
foreach ($orders as $order) {
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
$returned_order_sum = 0;
if ($order['order_sum'] >= 0
&& $order['is_deleted'] > 0
&& $order['check_number'] > 0
&& $order['who_open'] > 0) {
$cancellations_count += 1;
$cancellations_sum += $order['order_sum'];
}
if ($setting > 0) {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] == 0) {
$waited_count += 1;
$waited_sum += $order['order_sum'];
}
} else {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] == 0
&& $order['place_name'] != 'ДОСТАВКА') {
$waited_count += 1;
$waited_sum += $order['order_sum'];
}
}
if ($setting > 0) {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 0
&& $order['place_name'] != 'ДОСТАВКА') {
$closed_count += 1;
$closed_sum += $order['order_sum'];
}
} else {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 0
&& $order['place_name'] != 'ДОСТАВКА'
&& $order_status != "Оплачен(*)") {
$closed_count += 1;
$closed_sum += $order['order_sum'];
}
}
if ($setting > 0) {
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
->where('order_code', $order['code'])
->first();
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
$deleted_count += $deleted_items_count;
$deleted_sum += $deleted_items_sum;
} else {
if ($order['place_name'] != 'ДОСТАВКА') {
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
->where('order_code', $order['code'])
->first();
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
$deleted_count += $deleted_items_count;
$deleted_sum += $deleted_items_sum;
}
}
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 1
&& $order['place_name'] != 'ДОСТАВКА') {
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
foreach ($returned_items as $returned_item) {
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_count += $returned_item['count'];
}
$closed_count += 1;
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
}
if ($setting == 1) {
$orders_info[] = array(
'id' => $order['code'],
'place' => $order['place_name'],
'table' => $order['table_name'],
'opened' => $order['opened'],
'closed' => $order['closed'] != '0000-00-00 00:00:00' ? $order['closed'] : false,
'who_open' => Staff::getName($order['who_open']),
'who_close' => $order['who_close'] != 0 ? Staff::getName($order['who_close']) : false,
'sum' => round($order['order_sum'], 2) - $returned_order_sum,
'preCheck_count' => ShiftOnlineActions::getPreCheckCount($order['code']),
'is_printed_before_edit' => ShiftOnlineActions::isPrintedBeforeEdit($order['code']),
'hasMove' => ShiftOnlineActions::hasMove($order['code']),
'hasMerge' => ShiftOnlineActions::hasMerge($order['code']),
'hasSlice' => ShiftOnlineActions::hasSlice($order['code']),
'hasDelete' => ShiftOnlineActions::hasDelete($order['code']),
'status' => $order_status
);
} elseif ($setting == 0 && $order_status != "Доставка" && $order_status != "Оплачен(*)" && $order['place_name'] != "ДОСТАВКА") {
$orders_info[] = array(
'id' => $order['code'],
'place' => $order['place_name'],
'table' => $order['table_name'],
'opened' => $order['opened'],
'closed' => $order['closed'] != '0000-00-00 00:00:00' ? $order['closed'] : false,
'who_open' => Staff::getName($order['who_open']),
'who_close' => $order['who_close'] != 0 ? Staff::getName($order['who_close']) : false,
'sum' => round($order['order_sum'], 2) - $returned_order_sum,
'preCheck_count' => ShiftOnlineActions::getPreCheckCount($order['code']),
'is_printed_before_edit' => ShiftOnlineActions::isPrintedBeforeEdit($order['code']),
'hasMove' => ShiftOnlineActions::hasMove($order['code']),
'hasMerge' => ShiftOnlineActions::hasMerge($order['code']),
'hasSlice' => ShiftOnlineActions::hasSlice($order['code']),
'hasDelete' => ShiftOnlineActions::hasDelete($order['code']),
'status' => $order_status
);
}
}
return [
'status' => 'success',
'place_name' => $place_name,
'waited_count' => round($waited_count, 2),
'waited_sum' => round($waited_sum, 2),
'closed_count' => round($closed_count, 2),
'closed_sum' => round($closed_sum, 2),
'deleted_count' => round($deleted_count, 2),
'deleted_sum' => round($deleted_sum, 2),
'returned_count' => round($returned_count, 2),
'returned_sum' => round($returned_sum, 2),
'cancellations_count' => round($cancellations_count, 2),
'cancellations_sum' => round($cancellations_sum, 2),
'orders' => $orders_info
];
}
$opened_orders_count = ShiftOnlineOrders::where('place_name', $places->name)
->where('is_closed', 0)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('is_returned', 0)
->count('id');
$opened_orders_sum = ShiftOnlineOrders::where('place_name', $places->name)
->where('is_closed', 0)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('is_returned', 0)
->sum('order_sum');
$opened_orders_client_count = ShiftOnlineOrders::where('place_name', $places->name)
->where('is_closed', 0)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('is_returned', 0)
->sum('client_count');
$setting = Settings::getValue(10);
$closed_orders = ShiftOnlineOrders::where('place_name', $places->name)
->where('is_closed', 1)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('who_close', '>', 0)
->get();
foreach ($closed_orders as $closed_order) {
$order_status = ShiftOnlineOrders::getOrderStatus($closed_order['code']);
if ($closed_order['order_sum'] >= 0
&& $closed_order['who_open'] > 0
&& $closed_order['who_close'] > 0
&& $closed_order['is_closed'] == 1
&& $closed_order['is_deleted'] == 0
&& $closed_order['is_returned'] == 1
&& $closed_order['place_name'] != 'ДОСТАВКА') {
$returned_items = ShiftOnlineOrders::getReturnedItems($closed_order['code']);
$returned_sum = $returned_order_sum = $returned_count = 0;
foreach ($returned_items as $returned_item) {
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_count += $returned_item['count'];
}
$closed_orders_count += 1;
$closed_orders_sum += round($closed_order['order_sum'], 2) - $returned_order_sum;
$closed_orders_client_count += $closed_order['client_count'];
}
if ($setting > 0) {
if ($closed_order['order_sum'] >= 0
&& $closed_order['who_open'] > 0
&& $closed_order['who_close'] > 0
&& $closed_order['is_closed'] == 1
&& $closed_order['is_deleted'] == 0
&& $closed_order['is_returned'] == 0
&& $closed_order['place_name'] != 'ДОСТАВКА') {
$closed_orders_count += 1;
$closed_orders_sum += $closed_order['order_sum'];
$closed_orders_client_count += $closed_order['client_count'];
}
} else {
if ($closed_order['order_sum'] >= 0
&& $closed_order['who_open'] > 0
&& $closed_order['who_close'] > 0
&& $closed_order['is_closed'] == 1
&& $closed_order['is_deleted'] == 0
&& $closed_order['is_returned'] == 0
&& $closed_order['place_name'] != 'ДОСТАВКА'
&& $order_status != "Оплачен(*)") {
$closed_orders_count += 1;
$closed_orders_sum += $closed_order['order_sum'];
$closed_orders_client_count += $closed_order['client_count'];
}
}
}
return [
'status' => 'success',
'opened_orders_count' => round($opened_orders_count, 2),
'opened_orders_sum' => round($opened_orders_sum, 2),
'opened_orders_client_count' => round($opened_orders_client_count, 2),
'closed_orders_count' => round($closed_orders_count, 2),
'closed_orders_sum' => round($closed_orders_sum, 2),
'closed_orders_client_count' => round($closed_orders_client_count, 2),
];
}
}
if ($type == 'places') {
$setting = Settings::getValue(10);
$opened_orders_count = $opened_orders_sum = $opened_orders_client_count = 0;
if ($setting > 0) {
$opened_orders_count = ShiftOnlineOrders::where('is_closed', 0)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('is_returned', 0)
->count('id');
$opened_orders_sum = ShiftOnlineOrders::where('is_closed', 0)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('is_returned', 0)
->sum('order_sum');
$opened_orders_client_count = ShiftOnlineOrders::where('is_closed', 0)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('is_returned', 0)
->sum('client_count');
} else {
$opened_orders_count = ShiftOnlineOrders::where('is_closed', 0)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('is_returned', 0)
->where('place_name', '<>', 'ДОСТАВКА')
->count('id');
$opened_orders_sum = ShiftOnlineOrders::where('is_closed', 0)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('is_returned', 0)
->where('place_name', '<>', 'ДОСТАВКА')
->sum('order_sum');
$opened_orders_client_count = ShiftOnlineOrders::where('is_closed', 0)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('is_returned', 0)
->where('place_name', '<>', 'ДОСТАВКА')
->sum('client_count');
}
$closed_orders = ShiftOnlineOrders::where('is_closed', 1)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('who_close', '>', 0)
->get();
$closed_orders_count = $closed_orders_sum = $closed_orders_client_count = 0;
foreach ($closed_orders as $closed_order) {
$order_status = ShiftOnlineOrders::getOrderStatus($closed_order['code']);
if ($closed_order['order_sum'] >= 0
&& $closed_order['who_open'] > 0
&& $closed_order['who_close'] > 0
&& $closed_order['is_closed'] == 1
&& $closed_order['is_deleted'] == 0
&& $closed_order['is_returned'] == 1
&& $closed_order['place_name'] != 'ДОСТАВКА') {
$returned_items = ShiftOnlineOrders::getReturnedItems($closed_order['code']);
$returned_sum = $returned_order_sum = $returned_count = 0;
foreach ($returned_items as $returned_item) {
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_count += $returned_item['count'];
}
$closed_orders_count += 1;
$closed_orders_sum += round($closed_order['order_sum'], 2) - $returned_order_sum;
$closed_orders_client_count += $closed_order['client_count'];
}
if ($setting > 0) {
if ($closed_order['order_sum'] >= 0
&& $closed_order['who_open'] > 0
&& $closed_order['who_close'] > 0
&& $closed_order['is_closed'] == 1
&& $closed_order['is_deleted'] == 0
&& $closed_order['is_returned'] == 0
&& $closed_order['place_name'] != 'ДОСТАВКА') {
$closed_orders_count += 1;
$closed_orders_sum += $closed_order['order_sum'];
$closed_orders_client_count += $closed_order['client_count'];
}
} else {
if ($closed_order['order_sum'] >= 0
&& $closed_order['who_open'] > 0
&& $closed_order['who_close'] > 0
&& $closed_order['is_closed'] == 1
&& $closed_order['is_deleted'] == 0
&& $closed_order['is_returned'] == 0
&& $closed_order['place_name'] != 'ДОСТАВКА'
&& $order_status != "Оплачен(*)") {
$closed_orders_count += 1;
$closed_orders_sum += $closed_order['order_sum'];
$closed_orders_client_count += $closed_order['client_count'];
}
}
}
return [
'status' => 'success',
'opened_orders_count' => round($opened_orders_count, 2),
'opened_orders_sum' => round($opened_orders_sum, 2),
'opened_orders_client_count' => round($opened_orders_client_count, 2),
'closed_orders_count' => round($closed_orders_count, 2),
'closed_orders_sum' => round($closed_orders_sum, 2),
'closed_orders_client_count' => round($closed_orders_client_count, 2),
];
}
if ($type == 'full') {
if (isset($input['staff_id'])) {
$staff_id = $input['staff_id'];
$orders = ShiftOnlineOrders::where('who_open', $staff_id)
->where('full_sum', '>=', 0)
->get();
$orders_count = ShiftOnlineOrders::where('who_open', $staff_id)
->where('full_sum', '>=', 0)
->count();
} elseif (isset($input['guests']) && $input['guests'] == true) {
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
->where('full_sum', '>=', 0)
->where('client_code', '<>', '')
->get();
$orders_count = ShiftOnlineOrders::where('who_open', '>', 0)
->where('full_sum', '>=', 0)
->where('client_code', '<>', '')
->count();
} elseif (isset($input['deleted']) && $input['deleted'] == true) {
$deleted_orders = ShiftOnlineDeleted::select('order_code')->groupBy('order_code')->get();
$deleted_orders_count = ShiftOnlineDeleted::select('order_code')->count();
$deleted_orders_id = [];
if ($deleted_orders_count > 0) {
foreach ($deleted_orders as $deleted_order) {
$deleted_orders_id[] = $deleted_order['order_code'];
}
}
$orders = ShiftOnlineOrders::whereIn('code', $deleted_orders_id)
->where('who_open', '>', 0)
->where('full_sum', '>=', 0)
->get();
$orders_count = $deleted_orders_count;
} elseif (isset($input['discounts']) && $input['discounts'] == true) {
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
->where('sale_sum', '>', 0)
->where('full_sum', '>=', 0)
->get();
$orders_count = ShiftOnlineOrders::where('who_open', '>', 0)
->where('sale_sum', '>', 0)
->where('full_sum', '>=', 0)
->count();
} else {
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
->where('full_sum', '>=', 0)
->get();
$orders_count = ShiftOnlineOrders::where('who_open', '>', 0)
->where('full_sum', '>=', 0)
->count();
}
$cancellations_count = $cancellations_sum = 0;
$waited_count = $waited_sum = 0;
$closed_count = $closed_sum = 0;
$deleted_count = $deleted_sum = 0;
$returned_count = $returned_sum = 0;
$deleted_items_count = $deleted_items_sum = 0;
$orders_info = [];
if ($orders_count > 0) {
$setting = Settings::getValue(10);
foreach ($orders as $order) {
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
$returned_order_sum = 0;
if ($order['order_sum'] >= 0
&& $order['is_deleted'] > 0
&& $order['check_number'] > 0
&& $order['who_open'] > 0) {
$cancellations_count += 1;
$cancellations_sum += $order['order_sum'];
}
if ($setting > 0) {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] == 0) {
$waited_count += 1;
$waited_sum += $order['order_sum'];
}
} else {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] == 0
&& $order['place_name'] != 'ДОСТАВКА') {
$waited_count += 1;
$waited_sum += $order['order_sum'];
}
}
if ($setting > 0) {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 0
&& $order['place_name'] != 'ДОСТАВКА') {
$closed_count += 1;
$closed_sum += $order['order_sum'];
}
} else {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 0
&& $order['place_name'] != 'ДОСТАВКА'
&& $order_status != "Оплачен(*)") {
$closed_count += 1;
$closed_sum += $order['order_sum'];
}
}
if ($setting > 0) {
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
->where('order_code', $order['code'])
->first();
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
$deleted_count += $deleted_items_count;
$deleted_sum += $deleted_items_sum;
} else {
if ($order['place_name'] != 'ДОСТАВКА') {
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
->where('order_code', $order['code'])
->first();
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
$deleted_count += $deleted_items_count;
$deleted_sum += $deleted_items_sum;
}
}
if ($setting > 0) {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 1
&& $order['place_name'] != 'ДОСТАВКА') {
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
foreach ($returned_items as $returned_item) {
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_count += $returned_item['count'];
}
$closed_count += 1;
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
}
} else {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 1) {
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
foreach ($returned_items as $returned_item) {
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_count += $returned_item['count'];
}
$closed_count += 1;
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
}
}
if ($setting == 1) {
$orders_info[] = array(
'id' => $order['code'],
'place' => $order['place_name'],
'table' => $order['table_name'],
'opened' => $order['opened'],
'closed' => $order['closed'] != '0000-00-00 00:00:00' ? $order['closed'] : false,
'who_open' => Staff::getName($order['who_open']),
'who_close' => $order['who_close'] != 0 ? Staff::getName($order['who_close']) : false,
'client_name' => $order['client_code'] != '' ? Client::getName($order['client_code']) : false,
'sum' => round($order['order_sum'], 2) - $returned_order_sum,
'sale_sum' => round($order['sale_sum'], 2),
'full_sum' => round($order['full_sum'], 2) - $returned_order_sum,
'preCheck_count' => ShiftOnlineActions::getPreCheckCount($order['code']),
'is_printed_before_edit' => ShiftOnlineActions::isPrintedBeforeEdit($order['code']),
'hasMove' => ShiftOnlineActions::hasMove($order['code']),
'hasMerge' => ShiftOnlineActions::hasMerge($order['code']),
'hasSlice' => ShiftOnlineActions::hasSlice($order['code']),
'hasDelete' => ShiftOnlineActions::hasDelete($order['code']),
'deleted_items_count' => $deleted_items_count,
'deleted_items_sum' => $deleted_items_sum,
'title' => '',
'status' => $order_status
);
} elseif ($setting == 0 && $order_status != "Доставка" && $order_status != "Оплачен(*)" && $order['place_name'] != "ДОСТАВКА") {
$orders_info[] = array(
'id' => $order['code'],
'place' => $order['place_name'],
'table' => $order['table_name'],
'opened' => $order['opened'],
'closed' => $order['closed'] != '0000-00-00 00:00:00' ? $order['closed'] : false,
'who_open' => Staff::getName($order['who_open']),
'who_close' => $order['who_close'] != 0 ? Staff::getName($order['who_close']) : false,
'client_name' => $order['client_code'] != '' ? Client::getName($order['client_code']) : false,
'sum' => round($order['order_sum'], 2) - $returned_order_sum,
'sale_sum' => round($order['sale_sum'], 2),
'full_sum' => round($order['full_sum'], 2) - $returned_order_sum,
'preCheck_count' => ShiftOnlineActions::getPreCheckCount($order['code']),
'is_printed_before_edit' => ShiftOnlineActions::isPrintedBeforeEdit($order['code']),
'hasMove' => ShiftOnlineActions::hasMove($order['code']),
'hasMerge' => ShiftOnlineActions::hasMerge($order['code']),
'hasSlice' => ShiftOnlineActions::hasSlice($order['code']),
'hasDelete' => ShiftOnlineActions::hasDelete($order['code']),
'deleted_items_count' => $deleted_items_count,
'deleted_items_sum' => $deleted_items_sum,
'title' => '',
'status' => $order_status
);
}
}
}
return [
'status' => 'success',
'waited_count' => round($waited_count, 2),
'waited_sum' => round($waited_sum, 2),
'closed_count' => round($closed_count, 2),
'closed_sum' => round($closed_sum, 2),
'deleted_count' => round($deleted_count, 2),
'deleted_sum' => round($deleted_sum, 2),
'returned_count' => round($returned_count, 2),
'returned_sum' => round($returned_sum, 2),
'cancellations_count' => round($cancellations_count, 2),
'cancellations_sum' => round($cancellations_sum, 2),
'orders' => $orders_info
];
}
if ($type == 'dashboard') {
$orders = ShiftOnlineOrders::where('who_open', '>', 0)
->where('full_sum', '>=', 0)
->get();
$cancellations_count = $cancellations_sum = 0;
$waited_count = $waited_sum = 0;
$closed_count = $closed_sum = 0;
$deleted_count = $deleted_sum = 0;
$returned_count = $returned_sum = 0;
$setting = Settings::getValue(10);
foreach ($orders as $order) {
$order_status = ShiftOnlineOrders::getOrderStatus($order['code']);
$returned_order_sum = 0;
if ($order['order_sum'] >= 0
&& $order['is_deleted'] > 0
&& $order['check_number'] > 0
&& $order['who_open'] > 0) {
$cancellations_count += 1;
$cancellations_sum += $order['order_sum'];
}
if ($setting > 0) {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] == 0) {
$waited_count += 1;
$waited_sum += $order['order_sum'];
}
} else {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] == 0
&& $order['place_name'] != 'ДОСТАВКА') {
$waited_count += 1;
$waited_sum += $order['order_sum'];
}
}
if ($setting > 0) {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 0
&& $order['place_name'] != 'ДОСТАВКА') {
$closed_count += 1;
$closed_sum += $order['order_sum'];
}
} else {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 0
&& $order['place_name'] != 'ДОСТАВКА'
&& $order_status != "Оплачен(*)") {
$closed_count += 1;
$closed_sum += $order['order_sum'];
}
}
if ($setting > 0) {
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
->where('order_code', $order['code'])
->first();
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
$deleted_count += $deleted_items_count;
$deleted_sum += $deleted_items_sum;
} else {
if ($order['place_name'] != 'ДОСТАВКА') {
$deleted_items_count = ShiftOnlineDeleted::where('order_code', $order['code'])->sum('count');
$deleted_items_sum = ShiftOnlineDeleted::selectRaw('sum(sale_price * count) as deleted_sum')
->where('order_code', $order['code'])
->first();
$deleted_items_sum = $deleted_items_sum['deleted_sum'];
$deleted_count += $deleted_items_count;
$deleted_sum += $deleted_items_sum;
}
}
if ($setting > 0) {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 1
&& $order['place_name'] != 'ДОСТАВКА') {
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
foreach ($returned_items as $returned_item) {
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_count += $returned_item['count'];
}
$closed_count += 1;
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
}
} else {
if ($order['order_sum'] >= 0
&& $order['who_open'] > 0
&& $order['who_close'] > 0
&& $order['is_closed'] == 1
&& $order['is_deleted'] == 0
&& $order['is_returned'] == 1) {
$returned_items = ShiftOnlineOrders::getReturnedItems($order['code']);
foreach ($returned_items as $returned_item) {
$returned_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_order_sum += round(abs($returned_item['sale_price']) * $returned_item['count'], 2);
$returned_count += $returned_item['count'];
}
$closed_count += 1;
$closed_sum += round($order['order_sum'], 2) - $returned_order_sum;
}
}
}
return [
'status' => 'success',
'waited_count' => round($waited_count, 2),
'waited_sum' => round($waited_sum, 2),
'closed_count' => round($closed_count, 2),
'closed_sum' => round($closed_sum, 2),
'deleted_count' => round($deleted_count, 2),
'deleted_sum' => round($deleted_sum, 2),
'returned_count' => round($returned_count, 2),
'returned_sum' => round($returned_sum, 2),
'cancellations_count' => round($cancellations_count, 2),
'cancellations_sum' => round($cancellations_sum, 2)
];
}
}
}
if ($method == 'map') {
$roommap = [];
if (isset($input['type'])) {
$type = $input['type'];
if ($type == 'places') {
$places = Places::all();
return [
'status' => 'success',
'places' => $places,
];
}
if ($type == 'place' && isset($input['id'])) {
$place = Places::find($input['id']);
$place_name = $place->name;
$place_image = $place->image;
$tables = Tables::where('place_id', $input['id'])
->get();
foreach ($tables as $table) {
$opened_order_sum = ShiftOnlineOrders::where('place_name', $place_name)
->where('table_name', strval($table['table_id']))
->where('is_closed', 0)
->where('is_deleted', 0)
->where('who_open', '>', 0)
->where('is_returned', 0)
->sum('order_sum');
$orders_count = ShiftOnlineOrders::where('place_name', $place_name)
->where('table_name', strval($table['table_id']))
->where('who_open', '>', 0)
->count();
$tables_info[] = array(
'id' => $table['id'],
'name' => $table['name'],
'place_id' => $table['place_id'],
'table_id' => $table['table_id'],
'type' => $table['type'],
'width' => $table['width'],
'height' => $table['height'],
'x' => $table['x'],
'y' => $table['y'],
'sum' => floatval($opened_order_sum),
'count' => $orders_count
);
}
return [
'status' => 'success',
'place_id' => $input['id'],
'place' => $place_name,
'place_image' => $place_image,
'tables' => $tables_info,
];
}
if ($type == 'full') {
$places = Places::all();
foreach ($places as $place) {
$tables = Tables::where('place_id', $place['id'])
->get();
$roommap[] = array(
'place_id' => $place['id'],
'place_name' => $place['name'],
'tables' => $tables
);
}
return [
'status' => 'success',
'roommap' => $roommap,
];
}
}
}
}
return ['status' => 'success',
'message' => 'Ошибка данных запроса',];
}
}