from fastapi import APIRouter, HTTPException, status from app.schemas.booking import BookingRequestCreate, BookingRequestResponse from app.services.mailer import MailConfigurationError, send_booking_request_email router = APIRouter(prefix="/api", tags=["booking"]) @router.post("/booking-request", response_model=BookingRequestResponse) def create_booking_request(payload: BookingRequestCreate) -> BookingRequestResponse: try: send_booking_request_email(payload) except MailConfigurationError as exc: raise HTTPException( status_code=status.HTTP_503_SERVICE_UNAVAILABLE, detail="Il servizio email non è ancora configurato.", ) from exc except Exception as exc: # pragma: no cover - mail delivery path raise HTTPException( status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Si è verificato un problema durante l'invio della richiesta.", ) from exc return BookingRequestResponse( message="La richiesta è stata inviata correttamente e sarà presa in carico al più presto dal team.", )