"""Panel sohbet yönetimi (JWT). Thin handler'lar."""
from fastapi import APIRouter, Depends, Query

from app.auth.dependencies import get_current_tenant
from app.models.tenant import Tenant
from app.schemas.chat import OperatorMessageRequest
from app.services.chat_service import ChatService
from app.utils.responses import created, no_content, ok

router = APIRouter(prefix="/api/sessions", tags=["sessions"])


@router.get("")
async def list_sessions(
    status: str | None = Query(default=None),
    limit: int = Query(default=50, ge=1, le=200),
    tenant: Tenant = Depends(get_current_tenant),
    service: ChatService = Depends(),
):
    return ok(await service.list_sessions(tenant.id, status=status, limit=limit))


@router.get("/{session_id}")
async def get_session(
    session_id: str,
    tenant: Tenant = Depends(get_current_tenant),
    service: ChatService = Depends(),
):
    return ok(await service.get_session_detail(session_id, tenant.id))


@router.post("/{session_id}/takeover")
async def takeover(
    session_id: str,
    tenant: Tenant = Depends(get_current_tenant),
    service: ChatService = Depends(),
):
    result = await service.takeover(session_id, tenant.id)
    return ok(result.model_dump(mode="json"))


@router.post("/{session_id}/message")
async def operator_message(
    session_id: str,
    body: OperatorMessageRequest,
    tenant: Tenant = Depends(get_current_tenant),
    service: ChatService = Depends(),
):
    result = await service.operator_message(session_id, tenant.id, body.message)
    return created(result.model_dump(mode="json"))


@router.post("/{session_id}/close")
async def close_session(
    session_id: str,
    tenant: Tenant = Depends(get_current_tenant),
    service: ChatService = Depends(),
):
    await service.close_session(session_id, tenant.id)
    return no_content()
