Files
admin-php-module/commands/POSTRoomMap.php
miroman-afk 4d3ad7727d v.2.24
1. Редактор карты зала.
2022-10-27 15:48:02 +03:00

229 lines
9.4 KiB
PHP

<?php
namespace App\Commands;
use App\Component\Models\Places;
use App\Component\Models\Tables;
use App\Console\Commands\HRCCommand;
use App\Console\Commands\HRCCommandInterface;
use Illuminate\Support\Facades\DB;
class POSTRoomMap extends HRCCommand implements HRCCommandInterface
{
protected $signature = 'postroommap';
public function command($input, $output = null)
{
if (isset($input['type']) && $input['type'] == 'place') {
if ($input['action'] == 'create' && isset($input['name'])) {
$max_id = Places::max('id');
$place = new Places;
$place->id = $max_id + 1;
$place->name = urldecode($input['name']);
$place->save();
return [
'status' => 'success',
'message' => 'Зал успешно добавлен',
'place' => $place
];
}
if ($input['action'] == 'update' && isset($input['id']) && isset($input['name'])) {
$place = Places::find($input['id']);
$place->name = urldecode($input['name']);
$place->save();
return [
'status' => 'success',
'message' => 'Зал успешно обновлен',
'place' => $place
];
}
if ($input['action'] == 'delete' && isset($input['id'])) {
$place = Places::find($input['id']);
$place->delete();
return [
'status' => 'success',
'message' => 'Зал успешно удален'
];
}
if ($input['action'] == 'saveplaces' && isset($input['places'])) {
DB::statement("SET foreign_key_checks=0");
Tables::truncate();
Places::truncate();
DB::statement("SET foreign_key_checks=1");
$input['places'] = json_decode(urldecode($input['places']), TRUE);
foreach ($input['places'] as $place_items) {
$place_name = urldecode($place_items['place_name']);
$newPlace = new Places;
$newPlace->name = $place_name;
$newPlace->save();
foreach ($place_items['tables'] as $table_item) {
$table_id = $table_item['table_id'];
$table_place_id = $place_items['place_id'];
$table_name = urldecode($table_item['name']);
$table_width = $table_item['width'];
$table_height = $table_item['height'];
$table_x = $table_item['x'];
$table_y = $table_item['y'];
$newTable = new Tables;
$newTable->name = $table_name;
$newTable->table_id = $table_id;
$newTable->place_id = $table_place_id;
$newTable->width = $table_width;
$newTable->height = $table_height;
$newTable->x = $table_x;
$newTable->y = $table_y;
$newTable->save();
}
}
$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',
'message' => 'Карта успешно обновлена',
'roommap' => $roommap,
];
}
return [
'status' => 'success',
'error_message' => 'Проверьте введенные данные',
];
}
if (isset($input['type']) && $input['type'] == 'table') {
if ($input['action'] == 'create' &&
isset($input['place_id']) &&
isset($input['table_id']) &&
isset($input['name']) &&
isset($input['width']) &&
isset($input['height']) &&
isset($input['x']) &&
isset($input['y']) &&
isset($input['type'])) {
$table = Tables::where('place_id', $input['place_id'])->where('table_id', $input['table_id'])->where('name', $input['name'])->first();
if (isset($table)) {
return [
'status' => 'success',
'error_message' => 'Стол уже существует',
];
}
$table_id = $input['table_id'];
$table_place_id = $input['place_id'];
$table_name = urldecode($input['name']);
$table_width = $input['width'];
$table_height = $input['height'];
$table_x = $input['x'];
$table_y = $input['y'];
$table_type = $input['type'];
$newTable = new Tables;
$newTable->name = $table_name;
$newTable->table_id = $table_id;
$newTable->place_id = $table_place_id;
$newTable->width = $table_width;
$newTable->height = $table_height;
$newTable->x = $table_x;
$newTable->y = $table_y;
$newTable->type = $table_type;
$newTable->save();
return [
'status' => 'success',
'message' => 'Стол успешно добавлен',
'table' => $newTable
];
}
if ($input['action'] == 'update' &&
isset($input['place_id']) &&
isset($input['table_id']) &&
isset($input['name']) &&
isset($input['width']) &&
isset($input['height']) &&
isset($input['x']) &&
isset($input['y']) &&
isset($input['type'])) {
$table = Tables::where('place_id', $input['place_id'])->where('table_id', $input['table_id'])->first();
$table_id = $input['table_id'];
$table_place_id = $input['place_id'];
$table_name = urldecode($input['name']);
$table_width = $input['width'];
$table_height = $input['height'];
$table_x = $input['x'];
$table_y = $input['y'];
$table_type = $input['type'];
$table = Tables::find($table['id']);
$table->name = $table_name;
$table->table_id = $table_id;
$table->place_id = $table_place_id;
$table->width = $table_width;
$table->height = $table_height;
$table->x = $table_x;
$table->y = $table_y;
$table->type = $table_type;
$table->save();
return [
'status' => 'success',
'message' => 'Стол успешно обновлен',
'table' => $table
];
}
if ($input['action'] == 'delete' &&
isset($input['place_id']) &&
isset($input['table_id'])) {
$table = Tables::where('place_id', $input['place_id'])->where('table_id', $input['table_id'])->first();
$table = Tables::find($table['id']);
$table->delete();
}
if ($input['action'] == 'savetables' && isset($input['tables']) && isset($input['place_id'])) {
$input['tables'] = json_decode(urldecode($input['tables']), TRUE);
$tables = Tables::where('place_id', intval($input['place_id']))->get();
foreach ($tables as $table) {
$del_table = Tables::find($table['id']);
$del_table->delete();
}
foreach ($input['tables'] as $item) {
$table_id = $item['table_id'];
$table_place_id = $item['place_id'];
$table_name = urldecode($item['name']);
$table_width = $item['width'];
$table_height = $item['height'];
$table_x = $item['x'];
$table_y = $item['y'];
$table_type = $item['type'];
$newTable = new Tables;
$newTable->name = $table_name;
$newTable->table_id = $table_id;
$newTable->place_id = $table_place_id;
$newTable->width = $table_width;
$newTable->height = $table_height;
$newTable->x = $table_x;
$newTable->y = $table_y;
$newTable->type = $table_type;
$newTable->save();
}
return [
'status' => 'success',
'message' => 'Зал успешно обновлен'
];
}
}
return [
'status' => 'success',
'error_message' => 'Проверьте введенные данные',
];
}
}