From f0d90708580766168b6a7086699d1a36c16bd46e Mon Sep 17 00:00:00 2001 From: "allen.yan" Date: Wed, 4 Jun 2025 16:02:35 +0800 Subject: [PATCH] =?UTF-8?q?API=20=20room=20control=20=E8=AA=BF=E6=95=B4=20?= =?UTF-8?q?=E7=82=BA=20room=5Fname=20=3D=20PC101?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/RoomControlController.php | 31 +++++++------------ app/Livewire/Admin/RoomDetailModal.php | 7 +++-- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/app/Http/Controllers/RoomControlController.php b/app/Http/Controllers/RoomControlController.php index 8f1c489..53d3486 100644 --- a/app/Http/Controllers/RoomControlController.php +++ b/app/Http/Controllers/RoomControlController.php @@ -254,10 +254,6 @@ class RoomControlController extends Controller { $validated = $request->validated(); $branch = Branch::where('name',$validated['branch_name'])->first(); - $room = Room::where([ - ['branch_id', $branch->id], - ['name', $validated['room_name']], - ])->first(); if (!$branch) { return ApiResponse::error('分店不存在'); @@ -267,18 +263,6 @@ class RoomControlController extends Controller return ApiResponse::error('分店未設定 外部URL'); } - if (!$room) { - return ApiResponse::error('房間不存在'); - } - - if (empty($room->internal_ip) || empty($room->port)) { - return ApiResponse::error('房間未設定 IP 或 Port'); - } - - if ($room->status === RoomStatus::Error) { - return ApiResponse::error('房間目前處於錯誤狀態,無法操作'); - } - $command = $validated['command']; $payload = [ 'branch_name' => $validated['branch_name'], @@ -302,10 +286,17 @@ class RoomControlController extends Controller { $validated = $request->validated(); $branch = Branch::where('name',$validated['branch_name'])->first(); - $room = Room::where([ - ['branch_id', $branch->id], - ['name', $validated['room_name']], - ])->first(); + $roomType = null; + $roomName = null; + // 從 room_name(例如 PC101, SVR01)中擷取 type 與 name + if (preg_match('/^([A-Za-z]+)(\d+)$/', $validated['hostname'], $matches)) { + $roomType = strtolower($matches[1]); // 'PC' → 'pc' + $roomName = $matches[2]; // '101' + } + $room = Room::where('branch_id', $branch->id) + ->where('name', $roomName) + ->where('type', $roomType) + ->first(); if (!$branch) { return ApiResponse::error('分店不存在'); diff --git a/app/Livewire/Admin/RoomDetailModal.php b/app/Livewire/Admin/RoomDetailModal.php index f0e214f..5e1421c 100644 --- a/app/Livewire/Admin/RoomDetailModal.php +++ b/app/Livewire/Admin/RoomDetailModal.php @@ -20,13 +20,14 @@ class RoomDetailModal extends Component 'openAccountNotify','closeAccountNotify' ]; - public $room; + public $room_name; public $branch; public bool $showModal = false; public function openModal($roomId) { - $this->room = Room::find($roomId); + $room = Room::find($roomId); + $this->room_name=$room->type->value . $room->name; $this->branch = Branch::find($this->room->branch_id); $this->showModal = true; } @@ -67,7 +68,7 @@ class RoomDetailModal extends Component { return [ 'branch_name' => $this->branch->name ?? '', - 'room_name' => $this->room->name ?? '', + 'room_name' => $this->room_name ?? '', 'command' => $command, 'started_at' => $startedAt ? $startedAt->toDateTimeString() : null, 'ended_at' => $endedAt ? $endedAt->toDateTimeString() : null,