# app/schemas/agent.py
from datetime import datetime
from pydantic import BaseModel, EmailStr
from typing import Optional


class AgentBase(BaseModel):
    name: str
    email: EmailStr


class AgentCreate(AgentBase):
    password: str


class AgentLogin(BaseModel):
    email: EmailStr
    password: str


class AgentOut(BaseModel):
    id: int
    name: str
    email: EmailStr
    is_online: bool

    class Config:
        from_attributes = True


class AssignmentOut(BaseModel):
    id: int
    agent_id: int
    visitor_id: int
    started_at: datetime
    ended_at: datetime | None = None

    class Config:
        from_attributes = True


class VisitorSummary(BaseModel):
    visitor_id: int
    visitor_uid: str
    client_id: int
    client_name: str | None = None
    website_url: str | None = None
    last_message_text: str    | None = None
    last_message_at: datetime | None = None
    assigned_agent_id: int    | None = None
    assigned_agent_name: str  | None = None


class AgentUpdate(BaseModel):
    name: Optional[str] = None
    current_password: Optional[str] = None
    new_password: Optional[str] = None


class ForgotPasswordRequest(BaseModel):
    email: EmailStr
    frontend_url: str


class ResetPasswordRequest(BaseModel):
    token: str
    new_password: str
    
    
class AssignmentHistoryResponse(BaseModel):
    id: int
    agent_id: int
    visitor_id: int
    visitor_name: str | None      # <-- ADD THIS
    started_at: datetime
    ended_at: datetime | None

    class Config:
        orm_mode = True

class AssignmentHistoryList(BaseModel):
    assignments: list[AssignmentHistoryResponse]
