KTV/app/Observers/RoomObserver.php
allen.yan cb530f94b8 202507301751
調整Room status log
調整Room 不能修改名稱
2025-07-30 18:08:09 +08:00

99 lines
2.6 KiB
PHP

<?php
namespace App\Observers;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Arr;
use App\Models\Room;
use App\Models\RoomStatusLog;
class RoomObserver
{
/**
* Handle the Room "created" event.
*/
public function created(Room $room): void
{
RoomStatusLog::create([
'branch_id' => $room->branch->id,
'room_id' => $room->id,
'user_id' => Auth::id()?? 0,
'is_online' => $room->is_online,
'status' => $room->status ?? 'error',
'started_at' => $room->started_at,
'ended_at' => $room->ended_at,
'message' => $room->log_message ?? '',
'source' => $this->getSource($room),
]);
}
/**
* Handle the Room "updated" event.
*/
public function updated(Room $room): void
{
// 檢查是否有變更狀態
if ($room->wasChanged()) {
RoomStatusLog::create([
'branch_id' => $room->branch->id,
'room_id' => $room->id,
'user_id' => Auth::id() ?? 0,
'is_online' => $room->is_online,
'status' => $room->status,
'started_at' =>$room->started_at,
'ended_at' =>$room->ended_at,
'message' => $room->log_message ?? '',
'source' => $this->getSource($room),
]);
}
}
/**
* Handle the Room "deleted" event.
*/
public function deleted(Room $room): void
{
$message = sprintf(
"%s:%s%s (%s:%s) 已刪除",
$room->branch->name,
$room->type->value,
$room->name,
$room->internal_ip,
$room->port
);
RoomStatusLog::create([
'branch_id' => $room->branch->id,
'room_id' => $room->id,
'user_id' => Auth::id() ?? 0,
'is_online' => $room->is_online,
'status' => $room->status,
'started_at' =>$room->started_at,
'ended_at' =>$room->ended_at,
'message' => $message,
'source' => $this->getSource($room),
]);
}
/**
* Handle the Room "restored" event.
*/
public function restored(Room $room): void
{
//
}
/**
* Handle the Room "force deleted" event.
*/
public function forceDeleted(Room $room): void
{
//
}
private function getSource(Room $room): string
{
return app()->runningInConsole() ? 'system' : ($room->log_source ?? 'manual');
}
}