from uuid import UUID, uuid4
from pydantic import BaseModel, Field, EmailStr
from datetime import datetime

class User(BaseModel):
    """
    Domain Entity cho User (Người dùng hệ thống).
    """
    id: UUID = Field(default_factory=uuid4)
    username: str = Field(..., min_length=3)
    email: EmailStr
    hashed_password: str
    is_active: bool = True
    role: str = Field("USER", description="Role: ADMIN, MANAGER, USER")
    created_at: datetime = Field(default_factory=datetime.utcnow)

    def deactivate(self):
        self.is_active = False

    def activate(self):
        self.is_active = True
