# app/routers/message.py

# from fastapi import APIRouter, Depends
# from sqlalchemy.orm import Session
# from app.schemas.message import MessageCreate, MessageOut
# from app.services.message import save_message
# from app.core.database import get_db

# router = APIRouter(prefix="/messages", tags=["Messages"])

# @router.post("/", response_model=MessageOut)
# def send_message_api(data: MessageCreate, db: Session = Depends(get_db)):
#     return save_message(db, data)


# app/routers/message.py

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

from app.schemas.message import MessageCreate, MessageOut
from app.services.message import save_message
from app.services.visitor import get_visitor_by_visitor_id
from app.services.client import get_client_by_id
from app.core.database import get_db

router = APIRouter(prefix="/messages", tags=["Messages"])


@router.post("/", response_model=MessageOut)
def send_message_api(data: MessageCreate, db: Session = Depends(get_db)):
    """
    Save a message from visitor or admin.
    Backend does NOT allow invalid client_id or visitor_id.
    """

    # Validate visitor
    visitor = get_visitor_by_visitor_id(db, data.visitor_id)
    if not visitor:
        raise HTTPException(status_code=404, detail="Visitor does not exist")

    # Validate client
    client = get_client_by_id(db, visitor.client_id)
    if not client:
        raise HTTPException(status_code=404, detail="Client does not exist")

    # Save message
    return save_message(db, data)
