from starlette.requests import Request
from starlette.responses import JSONResponse
from utils.logging_config import get_logger

logger = get_logger(__name__)


async def nudges_from_kb_endpoint(request: Request, chat_service, session_manager):
    """Get nudges for a user"""
    user = request.state.user
    user_id = user.user_id
    jwt_token = session_manager.get_effective_jwt_token(user_id, request.state.jwt_token)

    try:
        result = await chat_service.langflow_nudges_chat(
            user_id,
            jwt_token,
        )
        return JSONResponse(result)
    except Exception as e:
        return JSONResponse(
            {"error": f"Failed to get nudges: {str(e)}"}, status_code=500
        )


async def nudges_from_chat_id_endpoint(request: Request, chat_service, session_manager):
    """Get nudges for a user"""
    user = request.state.user
    user_id = user.user_id
    chat_id = request.path_params["chat_id"]

    jwt_token = session_manager.get_effective_jwt_token(user_id, request.state.jwt_token)

    try:
        result = await chat_service.langflow_nudges_chat(
            user_id,
            jwt_token,
            previous_response_id=chat_id,
        )
        return JSONResponse(result)
    except Exception as e:
        return JSONResponse(
            {"error": f"Failed to get nudges: {str(e)}"}, status_code=500
        )
