from datetime import datetime
from sqlalchemy import Column, Integer, String, Float, Boolean, DateTime
from app.database import Base
from app.utils.timezone import jakarta_now, to_jakarta_iso

class Device(Base):
    __tablename__ = "devices"
    
    id = Column(Integer, primary_key=True, index=True)
    device_id = Column(String, unique=True, index=True, nullable=False)
    device_name = Column(String, default="VTON Kiosk")
    device_model = Column(String, default="Android Device")
    android_version = Column(String, default="14")
    app_version = Column(String, default="1.0.0")
    ip_address = Column(String, default="127.0.0.1")
    battery_level = Column(Integer, default=100)
    is_charging = Column(Boolean, default=True)
    fps = Column(Float, default=30.0)
    latency_ms = Column(Integer, default=45)
    current_cloth_id = Column(Integer, nullable=True)
    current_cloth_sku = Column(String, default="")
    current_cloth_name = Column(String, default="None")
    status = Column(String, default="ONLINE")  # ONLINE, TRYING_ON, IDLE, OFFLINE, ERROR
    is_kiosk_locked = Column(Boolean, default=False)
    notes = Column(String, default="")
    last_heartbeat = Column(DateTime, default=jakarta_now)
    created_at = Column(DateTime, default=jakarta_now)

    def to_dict(self):
        return {
            "id": self.id,
            "device_id": self.device_id,
            "device_name": self.device_name,
            "device_model": self.device_model,
            "android_version": self.android_version,
            "app_version": self.app_version,
            "ip_address": self.ip_address,
            "battery_level": self.battery_level,
            "is_charging": self.is_charging,
            "fps": self.fps,
            "latency_ms": self.latency_ms,
            "current_cloth_id": self.current_cloth_id,
            "current_cloth_sku": self.current_cloth_sku,
            "current_cloth_name": self.current_cloth_name,
            "status": self.status,
            "is_kiosk_locked": self.is_kiosk_locked,
            "notes": self.notes,
            "last_heartbeat": to_jakarta_iso(self.last_heartbeat),
            "created_at": to_jakarta_iso(self.created_at)
        }
