KTVCentral/app/Models/RoomSession.php
allen.yan d70da24a75 202509041808
加入RoomApiToken 驗証
加入通知顯示
2025-09-04 18:12:15 +08:00

57 lines
1.3 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class RoomSession extends Model
{
use HasFactory;
protected $fillable = [
'room_id',
'started_at',
'ended_at',
'status',
'mode',
'close_reason',
'api_token',
];
protected $casts = [
'started_at' => 'datetime',
'ended_at' => 'datetime',
];
// 狀態常數
public const STATUS_ACTIVE = 'active';
public const STATUS_CLOSED = 'closed';
public const STATUS_FORCE_CLOSED = 'force_closed';
public const STATUS_FIRE_CLOSED = 'fire_closed';
// 模式常數
public const MODE_NORMAL = 'normal';
public const MODE_VIP = 'vip';
public const MODE_TEST = 'test';
public function scopeValidToken($query, ?string $token)
{
return $query->with('room')
->where('api_token', $token)
->whereIn('status', ['active', 'maintain']);
}
public function refreshValid(): ?self
{
return self::validToken($this->api_token)
->where('id', $this->id)
->first();
}
public function room()
{
return $this->belongsTo(Room::class);
}
}