from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session

from app.core.database import get_db
from app.schemas.chat import ChatRequest, ChatResponse
from app.services.chatbot_service import ChatbotService

router = APIRouter()
service = ChatbotService()


@router.get("/categories")
def get_categories():
    return service.get_categories()


@router.get("/sub-options/{category_code}")
def get_sub_options(category_code: str):
    return service.get_sub_options(category_code)


@router.get("/answer/{category_code}/{sub_code}")
def get_answer(
    category_code: str,
    sub_code: str,
    session_id: str,
    user: str,
    db: Session = Depends(get_db),
):
    return service.get_answer(db, session_id, user, category_code, sub_code)


@router.post("/chat", response_model=ChatResponse)
def chat(request: ChatRequest, db: Session = Depends(get_db)):
    result = service.process(
        db=db,
        session_id=request.session_id,
        user_name=request.user,
        message=request.message,
        employee_id=request.employee_id,
        department=request.department,
        device_name=request.device_name,
    )
    return ChatResponse(**result)