"""Pydantic schemas for support ticket models."""

from datetime import datetime
from typing import Optional
from uuid import UUID

from pydantic import BaseModel

from app.models.support import TicketStatus, TicketType


class SupportTicketBase(BaseModel):
    ticket_type: TicketType
    subject: str
    description: str
    status: TicketStatus = TicketStatus.OPEN


class SupportTicketCreate(SupportTicketBase):
    pass


class SupportTicketUpdate(BaseModel):
    status: Optional[TicketStatus] = None
    assigned_to: Optional[str] = None
    internal_notes: Optional[str] = None
    resolution: Optional[str] = None


class SupportTicketResponse(SupportTicketBase):
    id: UUID
    student_id: UUID
    assigned_to: Optional[str] = None
    resolution: Optional[str] = None
    resolved_at: Optional[datetime] = None
    resolved_by: Optional[UUID] = None
    created_at: datetime
    updated_at: datetime

    class Config:
        from_attributes = True


class SupportTicketMessageBase(BaseModel):
    content: str


class SupportTicketMessageCreate(SupportTicketMessageBase):
    pass


class SupportTicketMessageResponse(SupportTicketMessageBase):
    id: UUID
    ticket_id: UUID
    sender_id: UUID
    sender_role: str
    created_at: datetime

    class Config:
        from_attributes = True
